#android #kotlin #android-biometric-prompt #android-biometric
#Android #kotlin #android-биометрическая-подсказка #android-биометрический
Вопрос:
Я внедрил биометрическую аутентификацию, но она отлично работает на моем устройстве Samsung (Android 10), но не работает на одном устройстве plush и MI.
На устройствах Mi (Android 10) и one plush (Android 10) отображается только запрос отпечатка пальца, но не отображается опция аутентификации по лицу
Я установил свой идентификатор лица в настройках обоих устройств, но он не работает. работает только на устройстве Samsung.
Я использовал приведенный ниже код
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)
}
Ответ №1:
Похоже, FaceID распознается как слабый тип аутентификаторов для Android 11. Если набор разрешенных аутентификаторов, как показано ниже, начинает работать:
new BiometricPrompt.PromptInfo.Builder()
.setTitle(getString(R.string.mcm_fingerprint_promt_message, appName))
.setAllowedAuthenticators(BIOMETRIC_STRONG | DEVICE_CREDENTIAL | BIOMETRIC_WEAK)
.build();
Комментарии:
1. Метод setAllowedAuthenticators (….) недоступен
2. @ArunPK доступно в androidx.биометрический: биометрический: 1.1.0