How to detect if PIN/password/pattern is required to unlock phone?

前端 未结 3 547
暗喜
暗喜 2020-12-08 22:10

How can I detect if the phone is locked by a password, pin or pattern?

thank you!

相关标签:
3条回答
  • 2020-12-08 22:59

    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.

    0 讨论(0)
  • 2020-12-08 23:11

    Two methods

    1. Check programatically - API 16+

    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.

    1. Device Admin Policies

    Can also look into the Device Admin Policies which allow restrictions on how the app is setup regarding security including pin/pass set restrictions

    • Device Administration
    • Enhancing Security with Device Management Policies

    As an aside, these are the lock types you want to check for if using an encrypted Keystore. Check here for more info.

    0 讨论(0)
  • 2020-12-08 23:11

    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 ();
    }
    
    0 讨论(0)
提交回复
热议问题