Erlend
Erlend

Reputation: 4416

Android 4.3 : How can I check if user has lock enabled?

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?

Upvotes: 5

Views: 3197

Answers (3)

Divya
Divya

Reputation: 121

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();

Upvotes: 0

MikePtr
MikePtr

Reputation: 1711

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
}

Upvotes: 5

Erlend
Erlend

Reputation: 4416

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);

Upvotes: 8

Related Questions