I want my app to behave differently (not store stuff) if the user does not have a lock screen or only swipe enabled.
The top answer here: check whether lock was enabled or not has been edited to say the code no longer works after upgrade to Android 4.3.
Is there anyway to detect this on Android 4.3?
Ok, so it seems it is possible with some reflection. Not the best solution, but at least it works on the devices we tried:
Class<?> clazz = Class.forName("com.android.internal.widget.LockPatternUtils");
Constructor<?> constructor = clazz.getConstructor(Context.class);
constructor.setAccessible(true);
Object utils = constructor.newInstance(context);
Method method = clazz.getMethod("isSecure");
return (Boolean)method.invoke(utils);
You can check it with KeyguardManager:
KeyguardManager keyguardMgr = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
if(keyguardMgr.isKeyguardSecure()){
// Secure keyguard, the keyguard requires a password to unlock
} else {
// Insecure keyguard, the keyguard doesn't require a password to unlock
}
You can check with KeyguardManager's method isKeyguardSecure() to make sure if lock or passcode is enabled or not.
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
Toast.makeText(this,"KeyGuardEnabled ? "+ keyguardManager.isKeyguardSecure(),Toast.LENGTH_LONG).show();