BiometricPrompt в android не поддерживает выход на кнопку назад - PullRequest
0 голосов
/ 13 января 2020

Я использую android предоставленный класс BiometricPrompt для обеспечения биометрии c Аутентификация в нашем приложении работает нормально, но когда я нажимаю кнопку «Назад» на телефоне, появляется пустая страница. Вместо этого я хочу, чтобы приложение закрывалось нажатием кнопки «назад». Любые указатели будут полезны.,

public class FingerprintLoginActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        BiometricPrompt biometricPrompt = new BiometricPrompt(this, Executors.newSingleThreadExecutor(), new BiometricPrompt.AuthenticationCallback() {

            @Override
            public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) {
                super.onAuthenticationError(errorCode, errString);
                if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {
                    // user clicked negative button    
                } else {
                    // TODO: Called when an unrecoverable error has been encountered and the operation is complete.
                }
            }

            @Override
            public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
                super.onAuthenticationSucceeded(result);
                //TODO: Called when a biometric is recognized.
                Context.Fingerprint = true;
                Intent fingerprintIntent = new Intent(FingerprintLoginActivity.this, MainActivity.class);
                fingerprintIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(fingerprintIntent);
            }

            @Override
            public void onAuthenticationFailed() {
                super.onAuthenticationFailed();
                //TODO: Called when a biometric is valid but not recognized.
            }
        });

        BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder()
                .setTitle("touch to fingerprint scanner")
                .setNegativeButtonText("Cancel")
                .build();

        biometricPrompt.authenticate(promptInfo);
    }
}

1 Ответ

0 голосов
/ 13 января 2020

Я реализую на основе инструкций, приведенных здесь и здесь . Кнопка «Назад» отлично работает для меня: диалоговое окно / приглашение просто закрывается, и я возвращаюсь в «Активность». Вы узнаете пустую страницу, которую видите? может быть, вы реализуете API в пустой деятельности? Попробуйте следовать сообщениям в блоге, упомянутым выше, и дайте нам знать, как это происходит.

ОБНОВЛЕНИЕ: на основе ваших правок

Поскольку вы хотите выйти из действия, когда пользователь нажимает кнопку кнопка возврата, вы должны обработать BiometricPrompt.ERROR_USER_CANCELED в вашем коде, позвонив finish():

override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
            super.onAuthenticationError(errorCode, errString)
            Log.d(TAG, "onAuthenticationError -> $errorCode :: $errString")
            if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {
                loginWithPassword() 
            }else if(errorCode == BiometricPrompt.ERROR_USER_CANCELED){
                finish()
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...