【问题标题】:Use System Passcode For Authentication使用系统密码进行身份验证
【发布时间】:2017-08-16 16:32:19
【问题描述】:

我找不到允许我利用用户在 Android 设备上设置的密码/pin/模式以在我的应用中进行身份验证的 API。

有一个指纹身份验证 API,我可以使用它来要求 Android 对用户进行身份验证,但是没有密码 API 可以访问密码/pin/图案而不是指纹。

有没有办法让 Android 根据用户已经设置的密码/pin/模式在我的应用中进行身份验证?

【问题讨论】:

    标签: android authentication


    【解决方案1】:

    如果您问“我怎样才能要求系统重新验证用户?”,在 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  
            }  
        }  
    }
    

    【讨论】:

    • 谢谢,这似乎是在正确的轨道上。真的,我只是在寻找通过或失败。我只想让 Android 让我知道用户是否成功确认了凭据,或者他们是否失败了。这是否有一个回调,让我知道他们是通过还是失败。现在看,但是看不到结果的回调。
    • 看起来这篇文章回答了这个问题。现在检查一下。 stackoverflow.com/questions/39202487/…
    • 是的。这样可行。我将通过回调更新您的答案并将其标记为正确答案。谢谢你的帮助!!
    • @CommonsWare 对于以下 5 个版本,是否有任何替代方法可以做到这一点?
    • @Srt:我什么都不知道,抱歉。
    猜你喜欢
    • 2020-02-28
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2019-02-24
    • 1970-01-01
    相关资源
    最近更新 更多