确保已连续启用Android屏幕锁定

时间:2019-09-24 10:43:13

标签: android android-keystore device-admin screen-lock

对于一个管理密码密钥的Android应用程序,我想确保自首次运行该应用程序以来,该设备已连续 设置了屏幕锁。

特别是,只有在设备配置了安全外观(可以通过KeyguardManager.isDeviceSecure()检查)的情况下,应用程序才允许使用按键。但是,如果用户禁用其屏幕锁定,则其他人可能会选择将其锁定,重新启用屏幕锁定,并继续使用假装为原始用户的应用程序。我想避免这种情况,但仍然不需要每次使用密钥时都进行用户身份验证(使用Android KeyStore user authentication enforcement排除

如果禁用屏幕锁定,我目前看到两种删除数据的方法,这两种方法都有缺点:

  1. 设置DeviceAdminReceiver并使用onPasswordChanged监听屏幕锁定更改,如果禁用了屏幕锁定,则使按键无效。这是有问题的,因为它需要USES_POLICY_LIMIT_PASSWORD,API级别29不再支持。{li>
  2. 使用user authentication enforcement创建一个“ canary” KeyStore密钥,并检查使用时是否抛出KeyPermanentlyInvalidatedException。此解决方案感觉很hacky,取决于实现细节(例如,在UserNotAuthenticatedException之前抛出KeyPermanentlyInvalidatedException),并且不像解决方案1那样基于事件,这意味着在禁用屏幕锁定后不会立即删除这些键。

是否有更好的方法来对设备屏幕锁定取消激活?

0 个答案:

没有答案