42

常量在 API 级别 28 中已USE_FINGERPRINT弃用,USE_BIOMETRIC我们应该使用已添加到同一 API 级别中的更通用的。

我在 Manifest 中交换了这些常量,并且在调用FingerprintManagerCompat.from(context).isHardwareDetected().

错误是:

缺少所需的权限 - USE_FINGERPRINT

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

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

4

2 回答 2

117

我遇到了同样的问题,简短的回答是忽略弃用,只要您只想在您的应用程序中支持指纹身份验证。

正如google dev 博客中所述,从 API 28 开始,google 提出了新的生物识别 API,它简化了生物识别认证的整个过程。它们为 auth-dialog 提供了一个简单的构建器。此外,它们也支持面部和虹膜检测 - 恕我直言,如果您想支持它只是时间问题,并且可能值得升级它。

到目前为止,我发现的唯一缺点是,如果您想检查指纹硬件是否可用,您必须启动身份验证过程来检查这一点并等待错误回调。已弃用的指纹 API 提供了类似isHardwareDetected()hasEnrolledFingerprints()用于此目的的方法。在这种情况下,如果您依赖此信息,您可能必须重新设计您的应用程序。弃用这些方法的原因可能是它只支持指纹,因此升级它不是一个坏主意。

Google 还为 API 28 以下的设备提供了兼容 'androidx.biometric:biometric:1.0.0-alpha02'版本,似乎通过导入此依赖项,您可以简单地切换到USE_BIOMETRIC权限,而无需修改应用程序中的任何其他内容 - 您将不再被警告所困扰。由于它仅处于 alpha 阶段,因此我会小心使用它。因此,只要您不使用生物识别 API 中的任何内容,您也可以简单地忽略该问题并在您想要支持其他生物识别身份验证方法时再次面对它。

编辑:现在,compat 库的 beta 版本发布,'androidx.biometric:biometric:1.0.0-beta01'. 有关这方面的更多信息,请查看此处

现在,compat 库的稳定版本于 2019 年 12 月 18 日发布,'androidx.biometric:biometric:1.0.1'。有关此的更多信息,请单击此处

于 2018-10-22T10:29:15.793 回答
2

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
    }
}
于 2019-08-16T16:24:32.430 回答