BiometricPrompt исчезает или исчезает через некоторое время - PullRequest
0 голосов
/ 23 октября 2019

Я использую новый BiometricPrompt в своем приложении для Android из литературного ниже

implementation 'androidx.biometric:biometric:1.0.0-rc01'

Я могу успешно показать BiometicPrompt при загрузке действия.

Моя проблема, если ясохраняйте значение параметра «Подсказка» в течение 30–60 секунд, или если я переключу приложение в фоновый режим, или если я заблокирую и разблокирую экран, когда отображается подсказка, когда приложение снова появляется, BiometricPrompt закрывается или не отображается. Я не могу определить, связана ли проблема с моим исполнителем, пожалуйста, помогите. Ниже мой код

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    Executor executor = Executors.newFixedThreadPool(2);

    final BiometricPrompt biometricPrompt = new BiometricPrompt(this,
            executor, new BiometricPrompt.AuthenticationCallback() {
        @Override
        public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) {
            super.onAuthenticationError(errorCode, errString);
        }

        @Override
        public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
            super.onAuthenticationSucceeded(result);
            navigateHome();
        }

        @Override
        public void onAuthenticationFailed() {
            super.onAuthenticationFailed();
        }
    });

    final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder()
            .setTitle("Authenticate")
            .setSubtitle("Unlock with your fingerprint")
            .setNegativeButtonText("Cancel")
            .build();

    biometricPrompt.authenticate(promptInfo);

}

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Когда стек задач переключается (пользователь переходит к другому приложению или домашнему экрану) или когда устройство переходит в режим защиты клавиатуры / отключения экрана, BiometricPrompt отключается. Это преднамеренное поведение, что аутентификация не восстанавливается, так как пользователь может возобновить приложение и уже забыл контекст.

0 голосов
/ 23 октября 2019

То есть согласно дизайну. Приложения не должны ждать биометрической аутентификации бесконечно. Время ожидания может отличаться для разных устройств.

Когда истечет время ожидания, я ожидаю, что вы получите звонок на onAuthenticationError с BiometricConstants.BIOMETRIC_ERROR_TIMEOUT в качестве кода ошибки.

У меня естьПонятия не имею, почему Google выбрал нет, чтобы выставить эту константу через BiometricManager. Однако любой вызов onAuthenticationError должен рассматриваться как неисправимая ошибка и как завершение аутентификации.

...