如何在Android 5.0(API 21)之前确认设备凭证?

我有一个需要用户确认设备凭证的用例,而且KeyguardManager中的createConfirmDeviceCredentialIntent方法完全符合我的需要。 然而,这个方法是从API 21开始添加的。( 引用链接 )那么我怎么才能在Android 5.0之前实现相同的function呢? 我也想支持Android 4.X的版本。

谢谢!

Solutions Collecting From Web of "如何在Android 5.0(API 21)之前确认设备凭证?"

在21级之前,这对于无根设备来说当然是不可能的,并且没有常规权限的替代scheme。

如果需要额外的pipe理员权限是可以的,那么通过实现DeviceAdminReceiver.onPasswordSucceeded可以非常松散地模拟证书确认。 locking屏幕,密码成功后执行所需的操作。 这可能会变得相对复杂,因为行动并不总是被接收到(只有在状态发生变化的情况下),需要保持最后的成功,与接收方通信等。

作为一个方面说明,请仔细检查用例和devise,在大多数情况下,当使用createConfirmDeviceCredentialIntent时,实际上并不需要,其他deviseselect可能不需要它。

提供你正在试图保护的细节是更好的。 如果是未授权人员偶然访问设备的情况,并且从某个oauth服务产生了永久令牌,则通过相同的服务loginstream重新授权或存储一些原始凭证的hmac可能是合理的随着令牌,然后提示和重新validation凭据,而不是提示设备凭据。 或者,如果这足以满足用例的需求,则可以使用Googlelogin来授权访问您的应用/令牌,并validationGoogle用户对于存储的令牌是否相同。

我已经看到了这种情况的最佳答案在博客文章中描述:

Android的秘密

但是,它会重新创build私有系统类,并调用非公开的AOSP代码。 我的赏金是一个更好的答案,不需要在项目内部明确的类命名。 也许智能锁或另一个真棒安全库可以用于我需要的向后兼容性。