我正在使用 BiometricPrompt fromandroidx.biometric:biometric:1.0.0-beta02
进行身份验证过程。但我面临非常奇怪的问题。
我第一次调用biometricsPromt.authenticate()
一切正常,库根据设置的安全方法(模式、指纹、密码等)向我显示屏幕,然后调用回调,一切都很好。
问题是当我biometricsPromt.authenticate()
第二次打电话时我得到了错误:
E/DeviceCredentialHandler: onCreate: 执行器和/或回调为空!
我当然要传递执行程序和回调->它们不为空
有没有人面临同样的问题或知道可能是什么问题?
这就是我创建 BiometricPromt 的方式
`
companion object {
private val executor: Executor by lazy {
Executors.newSingleThreadExecutor()
}
fun showBiometricsPrompt(
activity: FragmentActivity,
callback: BiometricPrompt.AuthenticationCallback
): BiometricPrompt {
val promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle(activity.getString(R.string.title_authentication))
.setDescription(activity.getString(R.string.msg_authenticate_first))
.setDeviceCredentialAllowed(true)
.build()
val biometricPrompt =
BiometricPrompt(
activity,
executor, callback
)
biometricPrompt.authenticate(promptInfo)
return biometricPrompt
}
`
这就是我所说的:
`
BiometricsHelper.showBiometricsPrompt(
this,
object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
showToastMsg(errString.toString())
}
override fun onAuthenticationFailed() {
super.onAuthenticationFailed()
}
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
}
})
`