测试环境:4.0.4真机/2.3.3模拟器
2.1模拟器会报错
private void getLockQuality() throws Exception {
Class clazz = Class
.forName("com.android.internal.widget.LockPatternUtils");
Constructor constructor = clazz.getConstructor(Context.class);
Object mLockPatternUtils = constructor.newInstance(this);
Method mGetKeyguardStoredPasswordQuality = clazz
.getMethod("getKeyguardStoredPasswordQuality");
Method mIsLockPatternEnabled = clazz.getMethod("isLockPatternEnabled");
Method mSavedPatternExists = clazz.getMethod("savedPatternExists");
int quality = (Integer) mGetKeyguardStoredPasswordQuality.invoke(
mLockPatternUtils, null);
boolean isLockPatternEnabled = (Boolean) mIsLockPatternEnabled.invoke(
mLockPatternUtils, null);
boolean savedPatternExists = (Boolean) mSavedPatternExists.invoke(
mLockPatternUtils, null);
System.out.println("lock quality: " + quality);
if (quality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) {
if (!isLockPatternEnabled || !savedPatternExists) {
System.out.println("无屏幕锁,比如滑动解锁");
} else {
System.out.println("有屏幕锁,比如图案锁或面部解锁");
}
} else {
switch (quality) {
case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED:
System.out.println("安全级别为0,我的真机上没有这个级别的加密方式");
break;
// case DevicePolicyManager.PASSWORD_QUALITY_BIOMETRIC_WEAK:
// System.out.println("安全级别为32768,我的真机上没有这个级别的加密方式");
// break;
case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
System.out.println("PIN码锁");
break;
case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
System.out.println("纯英文密码锁");
break;
case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
System.out.println("有英文和数字的密码锁");
break;
// case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX:
// System.out.println("有英文、数字和特殊符号的密码锁");
// break;
default:
System.out.println("未知的安全级别");
break;
}
}
}
参考: