我被要求根据生物识别硬件的存在情况显示特定的UI元素。对于Android 23-27,我使用FingerprintManager#isHardwareDetected()
和 FingerprintManager#hasEnrolledFingerprints()
。这两个方法在Android 28中都已经弃用。
我了解到可以通过使用BiometricPrompt#authenticate(...)
并在BiometricPrompt.AuthenticationCallback#onAuthenticationError(int errorCode, ...)
方法中接收BiometricPrompt#BIOMETRIC_ERROR_HW_NOT_PRESENT
或BiometricPrompt#BIOMETRIC_ERROR_NO_BIOMETRICS
来获取此信息。但这会导致BiometricPrompt
在支持设备上显示,这是不期望的。同时,使用CancellationSignal
也似乎不是一个解决办法,因为我不知道何时取消提示。
是否有任何方法可以检测生物识别硬件的存在以及用户是否注册?