有的需求需要判断用户是否是设置了锁屏密码(图形,数字,混合)或者只有滑动解锁。使用
Settings.System.getInt(getContentResolver(),Settings.System.LOCK_PATTERN_ENABLED)
判断有的时候不准确,可以使用如下反射方法来获取(如果某ROM改掉了这个类就当我没说,如果需要获取密码类型还需要反射别的办法).
private boolean isSecured(){
boolean isSecured = false;
String classPath = "com.android.internal.widget.LockPatternUtils";
try{
Class<?> lockPatternClass = Class.forName(classPath);
Object lockPatternObject = lockPatternClass.getConstructor(Context.class).newInstance(getApplicationContext());
Method method = lockPatternClass.getMethod("isSecure");
isSecured = (boolean) method.invoke(lockPatternObject);
}catch (Exception e){
isSecured = false;
}
return isSecured;
}
而api16以后的话,android有直接提供方法判断,综合一下的话
private boolean checkPasswordToUnLock(){
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
KeyguardManager keyguardManager = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
return keyguardManager.isKeyguardSecure();
}else{
return isSecured();
}
}