常量USE_FINGERPRINT
为deprecated in API level 28,我们应该使用更通用的USE_BIOMETRIC
,它已在同一API级别中添加。
我在清单中交换了这些常量,并且在调用FingerprintManagerCompat.from(context).isHardwareDetected()
时遇到错误。
错误是:
缺少必需的权限-USE_FINGERPRINT
发生这种情况是因为28.0.0-rc3支持v4库中的@RequiresPermission("android.permission.USE_FINGERPRINT")
中的FingerprintManagerCompat
注释。
这是我可以忽略并继续使用新权限的东西吗?
答案 0 :(得分:43)
我也遇到过同样的问题,只要您仅希望在您的应用中支持指纹身份验证,简短的答案就是忽略弃用。
如google dev blog中所述,由于Google API 28推出了新的biometrics API,从而简化了生物特征认证的整个过程。它们为auth-dialog提供了一个简单的构建器。此外,它们还支持脸部和虹膜检测-恕我直言,如果要支持它,只是时间问题,可能值得升级。
到目前为止,我发现的唯一缺点是,如果您想检查是否指纹硬件可用,您必须启动身份验证过程才能将其检出并等待error callback。不建议使用的指纹API为此提供了isHardwareDetected()
或hasEnrolledFingerprints()
之类的方法。在这种情况下,如果您依赖此信息,则可能必须重新设计应用程序。弃用这些方法的原因可能是它仅支持指纹,因此升级它不是一个坏主意。
Google还为API 28以下的设备提供了 compat 'androidx.biometric:biometric:1.0.0-alpha02'
版本,看来通过导入此依赖项,您可以直接切换为USE_BIOMETRIC
权限,而无需修改应用中的其他任何内容-您将不再受到警告的困扰。由于它仅处于alpha阶段,因此我会谨慎使用。因此,只要您不使用生物识别API的任何内容,就可以简单地忽略该问题,并在想要支持其他生物识别方式时再次遇到该问题。
答案 1 :(得分:1)
biometrics API提供用于错误处理的BiometricConstants
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
//The device does not have a biometric sensor.
if (errorCode == BiometricPrompt.ERROR_HW_NOT_PRESENT){
//Do something
}
}
答案 2 :(得分:0)
您可以使用这个。
<uses-feature android:name="android.hardware.fingerprint" android:required="true" />