具有自定义密码的BiometricPrompt

时间:2019-10-23 09:57:30

标签: android android-fingerprint-api android-biometric-prompt

我当前正在使用BiometricPrompt(androidx.biometric:biometric:1.0.0-rc01

实施AppLock。

有一个使用设备密码的选项.setDeviceCredentialAllowed(true)

  

但是我想知道是否可以通过自定义密码(不是系统密码)使用此库?

谢谢。

3 个答案:

答案 0 :(得分:2)

  

但是我想知道是否可以通过自定义密码(不是系统密码)使用此库?

不,对不起。这超出了BiometricPrompt的范围。如果您希望将设备身份验证用作应用专用密码的第二因素,则需要自己实施应用专用密码。

答案 1 :(得分:1)

也许不完全是您的要求,但是如果您希望用户可以选择使用生物识别或应用程序密码(与设备相对应的应用程序密码),则可以执行以下操作。

您的onClick侦听器内部

if (BiometricManager.from(application).canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
    biometricPrompt.authenticate(promptInfo, cryptoObject)
} else {
    loginWithAppPasswordFragment() // use this to show a DialogFragment
}

更新

following blog post演示了如何在生物特征识别中使用帐户密码。

答案 2 :(得分:1)

要设置允许使用应用专用密码的身份验证,您可以执行以下操作:

BiometricPrompt.PromptInfo.Builder中,指定setNegativeButtonText(String)类似于<PeopleList people={this.state.names} removeName={(id) => this.handleRemoveName(id)} /> 。然后,在onAuthenticationError(int errorCode, CharSequence error)回调(当用户按下handleRemoveName = id => { const currentArr = this.state.names; console.log(id); } 按钮时调用)中,检查errorCode == ERROR_NEGATIVE_BUTTON。在这里,您可以实施应用密码检查。根据您的设计,它的范围可以从简单的设备上比较到复杂的事情,例如涉及公钥/私钥的服务器/客户端检查等等。