首页 > 系统 > Android > 正文

[源码]Android安卓应用手势锁图案解锁的实现

2019-11-08 00:05:02
字体:
来源:转载
供稿:网友

交互细节

用户首先使用账号/密码进行登录。登录成功后,判断是否是第一次登录使用,如果是第一次则显示创建手势密码的界面,要求用户创建手势锁。创建的过程中要求用户连接至少四个点,并且绘制两次以确认绘制正确并记住绘制的路径。确认成功后进入APP首页。用户在APP页面使用功能后,把APP退出到后台一定时间(超时),则下次再打开APP时弹出解锁页面,要求用户解锁,解锁成功进入APP页面。APP完全退出,下次重新打开APP使用,如果登录账号有缓存登录有效状态并且未过期,则跳过用户账号登录页面进入手势解锁页面,如果登录状态失效则需要重新输入账号密码登录。用户连续解锁5次失败则进入账号密码登录页面,如果用户忘记手势密码也可以直接点击“忘记手势密码”通过重新登录账号密码来重新设置手势锁。

源码

源码地址:Android安卓应用手势锁图案解锁的实现源码 - 下载频道 - CSDN.NET - 创建手势锁的代码见:CreateGestureActivity - 解锁手势的代码见:UnlockGestureActivity - 演示账号密码登录的页面:LoginActivity - 演示APP的主界面:MainActivity

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.lockdemo.view.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24dp" android:text="网易易盾-应用加固服务" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="您身边的移动应用安全专家,用心为移动应用安全保驾护航" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="http://dun.163.com/PRoduct/app-protect" /> <TextView android:layout_marginTop="40dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24dp" android:text="DEX加固/nUnity3d脚本保护/n防调试器/nSO加密保护/n防二次打包/n内存防Dump保护" /></LinearLayout>用户在APP页面使用功能后,把APP退出到后台一定时间(超时),则下次再打开APP时弹出解锁页面,要求用户解锁,解锁成功进入APP页面。主要在application中实现,主要代码:@Override public void onCreate() { super.onCreate(); countActivedActivity = 0; mInstance = this; mSP = getSharedPreferences(Constant.CONFIG_NAME, MODE_PRIVATE); mLockPatternUtils = new LockPatternUtils(this); registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { if (countActivedActivity == 0 && mBackgroundEver == true) { Log.v(TAG, "切到前台 lifecycle"); timeOutCheck(activity); } countActivedActivity++; } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { countActivedActivity--; if (countActivedActivity == 0) { Log.v(TAG, "切到后台 lifecycle"); mBackgroundEver = true; if (isAlpSwitchOn() == true) { saveStartTime(); } } } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } }); } public void timeOutCheck(Activity activity) { long endTime = System.currentTimeMillis(); if (endTime - getStartTime() >= Constant.TIMEOUT_ALP * 1000) { Util.toast(this, "超时了,请重新验证"); String alp = mSP.getString(Constant.ALP, null); if (TextUtils.isEmpty(alp) == false) { Intent intent = new Intent(this, UnlockGestureActivity.class); intent.putExtra("pattern", alp); intent.putExtra("login", false); //手势验证,不进行登录验证 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); // 打开新的Activity activity.startActivityForResult(intent, Constant.REQ_COMPARE_PATTERN_TIMEOUT_CHECK); } } } public void saveStartTime() { mSP.edit().putLong(Constant.START_TIME, System.currentTimeMillis()).commit(); } public long getStartTime() { long startTime = 0; try { startTime = mSP.getLong(Constant.START_TIME, 0); } catch (Exception e) { startTime = 0; } return startTime; }

效果

账号密码登录页面:

账号密码登录页面

创建手势锁:

创建手势锁

绘制第一遍手势路径:

绘制第一遍手势路径

要求再次绘制解锁图案:

要求再次绘制解锁图案

进入APP主页面:

进入APP主页面

进入手势解锁页面,要求用户解锁:

进入手势解锁页面,要求用户解锁

当用户解锁失败时:

当用户解锁失败时

连续5次解锁失败,要求重新登录:

连续5次解锁失败,要求重新登录

参考

【Android Lock Pattern】图案解锁(一):LockPatternView源代码 - Anthony LiAndroid之高仿手机QQ图案解锁 - way - 博客频道 - CSDN.NET
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表