Я реализовал отпечаток пальца Biometri c auth в моем проекте. Я установил резервный режим аутентификации на случай, если пользователь захочет использовать шаблон / пин / пароль, нажав кнопку «Использовать пароль». Я сделал это с помощью setDeviceCredentialAllowed (true), который работает в первый раз. Но всякий раз, когда я делаю это снова, экран шаблона / пин-кода / пароля больше не появляется. Я получаю следующий журнал в консоли logcat:
BiometricPromptCompat: не удалось проверить учетные данные устройства. Родительский обработчик не найден
Вот мой код для справки. Заранее спасибо.
executor = ContextCompat.getMainExecutor(this);
biometricPrompt = new BiometricPrompt(MainActivity.this,
executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode,
@NonNull CharSequence errString) {
super.onAuthenticationError(errorCode, errString);
Toast.makeText(getApplicationContext(),
"Authentication error: " + errString, Toast.LENGTH_SHORT)
.show();
}
@Override
public void onAuthenticationSucceeded(
@NonNull BiometricPrompt.AuthenticationResult result) {
super.onAuthenticationSucceeded(result);
Toast.makeText(getApplicationContext(),
"Authentication succeeded!", Toast.LENGTH_SHORT).show();
}
@Override
public void onAuthenticationFailed() {
super.onAuthenticationFailed();
Toast.makeText(getApplicationContext(), "Authentication failed",
Toast.LENGTH_SHORT)
.show();
}
});
promptInfo = new BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using your biometric credential")
.setDeviceCredentialAllowed(true)
.setConfirmationRequired(true)
.build();
biometricPrompt.authenticate(promptInfo);