Android BiometricPrompt.Builder.authenticate()未显示任何对话框

时间:2018-12-10 06:27:02

标签: android authentication fingerprint biometrics

这是我的代码,用于显示在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 :(得分:1)

您需要检查一些事项才能使用Biometric Prompt:

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