Это мой код для отображения запроса на аутентификацию по отпечатку пальца в 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- версия 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- было решением моей проблемы, большое вам спасибо! Для отображения диалогового окна необходим хотя бы один зарегистрированный отпечаток пальца.