How can I detect if the phone is locked by a password, pin or pattern?
thank you!
You can use the Settings.Secure class to query information about the security in place on an android device. For example, to see if the user has a lock pattern enabled you'd do:
ContentResolver cr = getContentResolver();
int lockPatternEnable =
Settings.Secure.getInt(cr, Settings.Secure.LOCK_PATTERN_ENABLED);
lockPatternEnable
would then have a 0 if it wasn't enabled and a 1 if it was enabled.
Two methods
https://gist.github.com/doridori/54c32c66ef4f4e34300f
Note that you dont need to check for face unlock as that requires that a pin/pass fallback is set.
Can also look into the Device Admin Policies which allow restrictions on how the app is setup regarding security including pin/pass set restrictions
As an aside, these are the lock types you want to check for if using an encrypted Keystore
. Check here for more info.
This should be OK for Android API 16 and up, according to the documentation. I tested it on 19 and it seems to work.
private boolean IsDeviceSecured () {
KeyguardManager keyguardManager =
(KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); //api 16+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return keyguardManager.isDeviceSecure();
}
return keyguardManager.isKeyguardSecure ();
}