setDeviceCredentialAllowed и ERROR_USER_CANCELED

Я внедряю биометрию и хотел бы иметь возможность вернуться к использованию 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". Благодарю вас!


person alisonthemonster    schedule 02.01.2020    source источник
comment
Я нашел эту проблему (issuetracker.google.com/issues/142740104), она похожа, но имеет код ошибки ERROR_CANCELED вместо ERROR_USER_CANCELED. Связанные возможно?   -  person alisonthemonster    schedule 03.01.2020
comment
Как прокомментировала alisonthemonster, это действительно ошибка. У меня Mi 5S, на Android 8 с MIUI 11 PIN-код работает нормально. Однако на моем эмуляторе Android 10 ИСПОЛЬЗОВАНИЕ ПИН-кода приведет к отмене аутентификации. Возможно, эта ошибка затрагивает только образы эмулятора.   -  person Tommy Vercetti    schedule 27.06.2020


Ответы (1)


эту ошибку все еще нужно решить, в настоящее время я использую Redmi Note 8 Pro и получаю ту же проблему.

person tanya anand    schedule 05.01.2021
comment
Ссылка на проблему/ошибку поможет. Чтобы люди могли отслеживать, исправлена ​​ли эта ошибка в будущем. - person ChristianB; 05.01.2021
comment
issuetracker.google.com/issues/142740104 - person tanya anand; 06.01.2021