如何检测解锁手机是否需要PIN /密码/模式?

Sha*_*one 16 android locking unlock

如何检测手机是否被密码,别针或图案锁定?

谢谢!

Dor*_*ori 15

两种方法

  1. 以编程方式检查 - API 16+

https://gist.github.com/doridori/54c32c66ef4f4e34300f

请注意,您不需要检查面部解锁,因为这需要设置引脚/通过回退.

  1. 设备管理员政策

还可以查看设备管理员策略,这些策略允许限制应用程序的安全设置,包括引脚/通行证限制

另外,如果使用加密,这些是您要检查的锁类型Keystore.点击此处了解更多信息.

  • 现在可以通过Keyguard检查所有三种锁类型"LOCK_PATTERN_ENABLED - 在API级别23中不推荐使用此常量.使用KeyguardManager确定键盘锁的状态和安全级别.从针对M或M的应用程序访问此设置后来抛出一个SecurityException." http://developer.android.com/reference/android/provider/Settings.Secure.html (2认同)

Kur*_*aum 5

您可以使用Settings.Secure类来查询有关Android设备上的安全性的信息.例如,要查看用户是否启用了锁定模式,您可以执行以下操作:

ContentResolver cr = getContentResolver();
int lockPatternEnable = 
  Settings.Secure.getInt(cr, Settings.Secure.LOCK_PATTERN_ENABLED);
Run Code Online (Sandbox Code Playgroud)

lockPatternEnable 如果未启用,则为0,如果启用则为1.

  • 如果设置了PIN或密码,[KeyguardManager.isKeyguardSecure()](http://developer.android.com/reference/android/app/KeyguardManager.html#isKeyguardSecure())将为true (3认同)

VSi*_*Sim 5

根据文档,这对于 Android API 16 及更高版本应该没问题。我在19号测试过,似乎有效。

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 ();
}
Run Code Online (Sandbox Code Playgroud)