【发布时间】:2017-08-16 16:32:19
【问题描述】:
我找不到允许我利用用户在 Android 设备上设置的密码/pin/模式以在我的应用中进行身份验证的 API。
有一个指纹身份验证 API,我可以使用它来要求 Android 对用户进行身份验证,但是没有密码 API 可以访问密码/pin/图案而不是指纹。
有没有办法让 Android 根据用户已经设置的密码/pin/模式在我的应用中进行身份验证?
【问题讨论】:
我找不到允许我利用用户在 Android 设备上设置的密码/pin/模式以在我的应用中进行身份验证的 API。
有一个指纹身份验证 API,我可以使用它来要求 Android 对用户进行身份验证,但是没有密码 API 可以访问密码/pin/图案而不是指纹。
有没有办法让 Android 根据用户已经设置的密码/pin/模式在我的应用中进行身份验证?
【问题讨论】:
如果您问“我怎样才能要求系统重新验证用户?”,在 Android 5.0+ 上,这样的事情应该可以工作:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
KeyguardManager km = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
if (km.isKeyguardSecure()) {
Intent authIntent = km.createConfirmDeviceCredentialIntent(getString(R.string.dialog_title_auth), getString(R.string.dialog_msg_auth));
startActivityForResult(authIntent, INTENT_AUTHENTICATE);
}
}
您可以在the andOTP project 中看到正在使用的代码(稍作修改)。
如果您要问“我怎样才能获得用户的密码/pin/图案供我自己使用?”,那是不可能的。
用这个来查看用户是否成功认证:
// call back when password is correct
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == INTENT_AUTHENTICATE) {
if (resultCode == RESULT_OK) {
//do something you want when pass the security
}
}
}
【讨论】: