I'm asked to show certain UI elements depending on the presence of biometric hardware. For Android 23-27 I use FingerprintManager#isHardwareDetected()
and FingerprintManager#hasEnrolledFingerprints()
. Both of which are deprecated in Android 28.
I understand that I can get this information by using BiometricPrompt#authenticate(...)
and receiving either BiometricPrompt#BIOMETRIC_ERROR_HW_NOT_PRESENT
or BiometricPrompt#BIOMETRIC_ERROR_NO_BIOMETRICS
in the BiometricPrompt.AuthenticationCallback#onAuthenticationError(int errorCode, ...)
method. But this would lead to the BiometricPrompt
being shown on supporting devices, which is undesirable. Using the CancellationSignal
doesn't seem to be a solution either, since I wouldn't know when to cancel the prompt.
Is there any way to detect biometric hardware presence and user enrolment?