直播系统代码,Android获取、设置锁屏密码
直播系统代码,Android获取、设置锁屏密码实现的相关代码
说到密码相关的一定要提到LockPatternUtils这个类,它是Android系统中管理锁屏密码的工具类,其中:
设置密码:
class LockPatternUtils{
/**
* 修改密码
*
* @param password 原密码,没有设置密码时为null
* @param savedPassword 新密码
* @param requestedQuality 密码的类型和限制
* DevicePolicyManager.PASSWORD_QUALITY_SOMETHING://图案
* DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX://PIN码
* DevicePolicyManager.PASSWORD_QUALITY_COMPLEX://密码
* @param userHandle 当前的UserID.
*
*/
public void saveLockPassword(String password, String savedPassword, int requestedQuality, int userHandle);
}
实例:
/**
* @param password 原密码,没有设置密码时为null
* @param savedPassword 新密码
*
*/
private void saveLockPassword(String password, String mUserPassword) {
try {
LockPatternUtils lockPatternUtils = new LockPatternUtils(this);
int userId = ActivityManager.getService().getCurrentUser().id;
lockPatternUtils.saveLockPassword(password, mUserPassword, DevicePolicyManager.PASSWORD_QUALITY_COMPLEX, userId);
} catch (Exception e) {
e.printStackTrace();
}
}
关于如何获取原密码,我闹了一个笑话,在发现源码里面的原密码是在几个画面之间用Bundle存起来互相传递的,可是我没有找到系统是以哪一个方法去获取到系统密码的,以正常的逻辑来看,获取原密码的方法也是应该属于LockPatternUtils这个类,但是我就是找不到,又在画面之间传递的Bundle绕晕了,脸怼屏幕看源码卡了我一天。
后面各种查询,才发现Android6.0之后因为安全问题,已经删除了查询到密码的方法…那系统是怎么拿到原密码的呢?
答案其实很简单,进入密码设置画面之前系统会进行密码验证,LockPatternChecker类中提供了验证密码的方法checkPassword,当验证成功时,输入框里的内容就是原密码,再把原密码传递到下一个画面。当时我进入了系统一定有提供获取密码的方法这个怪圈,现在想想真的是好笑,哈哈。
验证密码的方法:LockPatternChecker.checkPassword:
public static AsyncTask<?, ?, ?> checkPassword(final LockPatternUtils utils, final String password, final int userId, final LockPatternChecker.OnCheckCallback callback) {
AsyncTask<Void, Void, Boolean> task = new AsyncTask<Void, Void, Boolean>() {
private int mThrottleTimeout;
protected Boolean doInBackground(Void... args) {
try {
LockPatternUtils var10000 = utils;
String var10001 = password;
int var10002 = userId;
LockPatternChecker.OnCheckCallback var10003 = callback;
Objects.requireNonNull(var10003);
return var10000.checkPassword(var10001, var10002, var10003::onEarlyMatched);
} catch (RequestThrottledException var3) {
this.mThrottleTimeout = var3.getTimeoutMs();
return false;
}
}
protected void onPostExecute(Boolean result) {
callback.onChecked(result, this.mThrottleTimeout);
}
protected void onCancelled() {
callback.onCancelled();
}
};
task.execute(new Void[0]);
return task;
}
使用:
private void checkPassword(String password,LockPatternChecker.OnCheckCallback checkCallback ) {
LockPatternChecker.checkPassword(lockPatternUtils, password, userId, checkCallback);
}
以上就是直播系统代码,Android获取、设置锁屏密码实现的相关代码, 更多内容欢迎关注之后的文章