API级别28不推荐使用USE_FINGERPRINT

时间:2018-07-17 07:30:21

标签: android android-permissions android-appcompat android-9.0-pie

常量USE_FINGERPRINTdeprecated in API level 28,我们应该使用更通用的USE_BIOMETRIC,它已在同一API级别中添加。

我在清单中交换了这些常量,并且在调用FingerprintManagerCompat.from(context).isHardwareDetected()时遇到错误。

错误是:

  

缺少必需的权限-USE_FINGERPRINT

发生这种情况是因为28.0.0-rc3支持v4库中的@RequiresPermission("android.permission.USE_FINGERPRINT")中的FingerprintManagerCompat注释。

这是我可以忽略并继续使用新权限的东西吗?

3 个答案:

答案 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" />