Android BiometricPrompt.Builder.authenticate () не отображает диалог - PullRequest
0 голосов
/ 10 декабря 2018

Это мой код для отображения запроса на аутентификацию по отпечатку пальца в 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());
}

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

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

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

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

Может кто-нибудь помочь мне выяснить, как?

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

1 Ответ

0 голосов
/ 10 декабря 2018

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

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();
}
...