使用系统密码进行身份验证。

7
我无法找到一个API,可以让我在我的应用中使用用户设置的Android设备上的密码/ PIN /模式进行身份验证。虽然有指纹认证API可以用来请求Android验证用户,但并没有类似于指纹的密码API可供使用。
是否有一种方法可以让Android基于密码/PIN/图案对用户进行我的应用程序的身份验证?
1个回答

26
如果你想问“我该如何要求系统重新认证用户?”,在安卓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);
    }
}
你可以看到该代码的使用(稍作修改)在andOTP项目中。
如果你想知道“怎样获取用户的密码、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  
        }  
    }  
}

谢谢,这似乎是正确的方向。实际上,我只是在寻找一个通过或失败的结果。我只想让Android告诉我用户是否成功确认了凭据,或者他们是否失败了。这个有回调函数让我知道他们是否通过或失败吗?我正在看它,但我没有看到一个回调来查看结果。 - D. Wall
看起来这篇帖子回答了这个问题。现在正在检查它。https://stackoverflow.com/questions/39202487/can-app-use-android-security-mechanism-pin-code-pattern-password - D. Wall
1
没错,这个可以。我会用回调函数更新你的答案,并将其标记为正确答案。感谢你的帮助! - D. Wall
1
@CommonsWare 有没有其他方法可以在以下5个版本中实现相同的功能? - Sarath Kn
@Srt:对不起,我不知道任何相关信息。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接