0

我在我的应用程序中使用指纹身份验证。要确定设备是否具有指纹硬件,我正在使用它

getPackageManager().hasSystemFeature(PackageManager.FEATURE_FINGERPRINT);

在官方文档中提到它是在 API 23 中添加的。

什么在起作用

此 API 适用于所有 API 24 及更高版本。(我在 24、26 和 30 测试过)

##What is not working 即使设备有可用的指纹硬件,它也总是返回 false。

我的问题是

  • 它是一个错误吗?
  • 我错过了什么吗?我对 hasSystemFeature() 的理解不正确吗?
  • 什么是更可靠的检查方法?

我在这里找到了一个非常有趣的答案,它说即使设备具有指纹硬件,它也可以返回 false,因为该功能可能未在配置文件中指定。我不知道这有多可信。

4

1 回答 1

0

使用 Android 生物识别库,对于 java 是androidx.biometric:biometric:1.2.0-alpha04而对于 kotlin 是androidx.biometric:biometric-ktx:1.2.0-alpha04

在java中

int canAuthenticate = BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG);
if(canAuthenticate == BIOMETRIC_ERROR_NO_HARDWARE) {
   //The device has no fingerprint sensot
} else {
   //do some stuff work here
}

在科特林

val canAuthenticate = BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG)
if(canAuthenticate == BIOMETRIC_ERROR_NO_HARDWARE) {
   //The device has no fingerprint sensot
} else {
   //do some stuff work here
}
于 2022-01-29T16:30:27.940 回答