I want to check what biometrics are supported on Android devices with API level 28+ to be able to to show relevant text to the users. E.g. "Log in with Fingerprint", "Login with Face", "Login with Iris", "Enable Fingerprint login", "Enable Face login", etc.
I am using BiometricManager.canAuthenticate() to determine if biometrics can be used. For versions older than 28 BiometricManager
uses FingerprintManagerCompat
internally so I know that if the result is BIOMETRIC_SUCCESS
the device uses fingerprint.
Is there a way to know what biometrics are supported - fingerprint, face, iris? Maybe some devices can support more than one.
Only devices with API29 provide more biometric options than fingerprint.
By checking the android.hardware.biometrics.BiometricManager.hasBiometrics()
(API29) you can understand how to inspect what biometrics are available:
final PackageManager pm = context.getPackageManager();
return pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)
|| pm.hasSystemFeature(PackageManager.FEATURE_IRIS)
|| pm.hasSystemFeature(PackageManager.FEATURE_FACE);