How can I detect if the phone is locked by a password, pin or pattern?
thank you!
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 ();
}
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.