如何解决BiometricPrompt FACE ID 身份验证在某些设备中不起作用
我已经实施了生物识别身份验证,但它在我的三星(Android 10)设备上运行良好,但在一个毛绒和 MI 设备上却无法运行。
小米(Android 10)和一个毛绒(Android 10)设备,只显示指纹提示,不显示人脸认证选项
我在两个设备设置中都设置了我的面部 ID,但它不起作用。仅适用于三星设备。
我使用了以下代码
executor = ContextCompat.getMainExecutor(this)
biometricPrompt = BiometricPrompt(this,executor,object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int,errString: CharSequence) {
super.onAuthenticationError(errorCode,errString)
Toast.makeText(applicationContext,"Authentication error: $errString",Toast.LENGTH_SHORT)
.show()
}
override fun onAuthenticationSucceeded(
result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
Toast.makeText(applicationContext,"Authentication succeeded!",Toast.LENGTH_SHORT)
.show()
}
override fun onAuthenticationFailed() {
super.onAuthenticationFailed()
Toast.makeText(applicationContext,"Authentication failed",Toast.LENGTH_SHORT)
.show()
}
})
promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using your biometric credential")
.setConfirmationRequired(true).
setNegativeButtonText("login")
.build()
val biometricLoginButton =
findViewById<TextView>(R.id.tvClick)
biometricLoginButton.setOnClickListener {
biometricPrompt.authenticate(promptInfo)
}
解决方法
看起来 FaceId 被识别为 Android 11 的弱类型身份验证器。 如果一组允许的身份验证器如下所示,它开始工作:
new BiometricPrompt.PromptInfo.Builder()
.setTitle(getString(R.string.mcm_fingerprint_promt_message,appName))
.setAllowedAuthenticators(BIOMETRIC_STRONG | DEVICE_CREDENTIAL | BIOMETRIC_WEAK)
.build();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。