Я внедряю биометрию и хотел бы иметь возможность вернуться к использованию PIN-кода, если пользователь не хочет/имеет биометрию.
Проблема в том, что когда пользователь выбирает «Использовать PIN-код», вводит свой PIN-код и аутентифицирует два разных обратных вызова:
Первый: onAuthenticationSucceeded
который ожидается. Второй: onAuthenticationError
с BiometricConstants.ERROR_USER_CANCELED
.
Почему при вводе PIN-кода вместо биометрических данных возникает ошибка ERROR_USER_CANCELED? Я обработал эту ошибку, завершив свою деятельность, а это не то, что я хочу в этом потоке. Я сделал это, потому что, когда пользователь нажимает за пределами диалогового окна, я хочу закрыть приложение, и в этом случае возникает та же самая ошибка (несмотря на это исправление).
Есть ли способ отличить преднамеренную отмену диалогового окна (с помощью кнопки «Назад» или нажатием вне диалогового окна) и вводом PIN-кода?
Вот мой PromptInfo
:
val promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle(getString(R.string.lock_title))
.setSubtitle(getString(R.string.lock_summary))
.setConfirmationRequired(false)
.setDeviceCredentialAllowed(true)
.build()
Тестирование на Pixel 2 с Android 10. Версия "androidx.biometric:biometric:1.0.1"
. Благодарю вас!