我有一个使用案例需要用户确认设备凭据,而KeyguardManager中的createConfirmDeviceCredentialIntent方法完全满足我的需求。但是,这个方法是在API 21之后添加的。(参考链接)那么,在Android 5.0之前如何实现相同的功能?我还想支持Android 4.X等版本。
谢谢!
在21级之前,非root设备肯定无法实现这一点,而且没有常规权限的替代品。
如果需要额外的管理员权限来确认凭据,则可能可以通过实现{{link1:DeviceAdminReceiver.onPasswordSucceeded
}} 松散地模拟凭据确认,但需要更多的努力。当密码成功时锁定屏幕并执行所需操作。这可能会相对复杂,因为不总是接收到操作(仅在状态发生变化时),需要保持上次成功,与接收方进行通信等。
另外,请仔细检查使用情况和设计,在大多数情况下,使用createConfirmDeviceCredentialIntent实际上并不需要,并且可能有其他设计选择可以消除对其的需求。
最好提供确切的保护内容细节。如果是防止未经授权的人意外访问设备的场景,并且已从某些oauth服务生成永久令牌,则可能合理地重新通过相同的服务登录流程进行授权,或者将原始凭据的某些hmac与令牌一起存储,然后提示并重新验证凭据,而不是提示设备凭据。或者,如果这足够用例,您可以使用google登录来授权访问您的应用程序/令牌,并验证Google用户是否与存储的令牌相同。
try {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
startActivity(new Intent("android.credentials.UNLOCK"));
} else {
startActivity(new Intent("com.android.credentials.UNLOCK"));
}
} catch (ActivityNotFoundException e) {
Log.e(TAG, "No UNLOCK activity: " + e.getMessage(), e);
}
悬赏金用于获取一个更合法的向后兼容库以进行本地身份验证?除了将用户发送回我的服务器进行输入之外,还有其他方法吗? - Beth Mezias