Android BiometricPrompt.Builder.authenticate () не показывает диалоговое окно

Это мой код для отображения запроса на аутентификацию по отпечатку пальца в Android P:

private void displayBiometricPrompt() {
    DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(getApplicationContext(), "Fingerprint Authentication cancelled", Toast.LENGTH_LONG);
        }
    };
    BiometricPrompt bm = new BiometricPrompt.Builder(getApplicationContext())
            .setTitle("Add a title")
            .setSubtitle("Add a subtitle")
            .setDescription("Add a description")
            .setNegativeButton("CANCEL", getMainExecutor(), onClickListener)
            .build();
            bm.authenticate(getCancellationSignal(), getMainExecutor(), getAuthenticationCallback());
}

К сожалению, он не работает, так как не отображает диалоговое окно или запрос на авторизацию по отпечатку пальца.

В моем коде тоже нет ошибок, я не получаю исключений.

Я проверил разрешения, и все вроде как требуется для биометрической подсказки.

Просто ничего не происходит.

Может ли кто-нибудь помочь мне узнать, как это сделать?

Цените любую помощь

3
0
3 451
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вам необходимо проверить несколько вещей, чтобы работать с биометрической подсказкой:

1- версия Android должна быть Pie или выше

public static boolean isBiometricPromptEnabled() {
    return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P);
}

2- оборудование должно быть доступно

public static boolean isHardwareSupported(Context context) {
    FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.from(context);
    return fingerprintManager.isHardwareDetected();
}

3- пользователь должен зарегистрировать хотя бы 1 отпечаток пальца в настройках

private static boolean isFingerprintAvailable(Context context) {
    FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.from(context);
    return fingerprintManager.hasEnrolledFingerprints();
}

3- было решением моей проблемы, большое вам спасибо! Для отображения диалогового окна необходим хотя бы один зарегистрированный отпечаток пальца.

user10769046 10.12.2018 12:44

Другие вопросы по теме