我有一个在主页按钮上有一个指纹传感器的设备。其他应用程序似乎可以识别并正确处理它,但是我正在构建的应用程序在几个步骤中失败:
我正在使用android.support.v4.hardware.fingerprint.FingerprintManagerCompat
// at this point isHardwareDetected returns false
val fingerprintManager = FingerprintManagerCompat.from(context)
if (!fingerprintManager.isHardwareDetected) {
return false
}
如果我跳过硬件检测步骤,它仍然失败
// hasEnrolledFingerprints returns false even tough there
// are couple of fingerprints registered
if (!fingerprintManager.hasEnrolledFingerprints()) {
return false
}
该设备是UMI Plus E Android 6.0.1
它能有什么问题?
此外,这是我关于指纹的清单:
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-feature android:name="android.hardware.fingerprint" android:required="false" />
编辑
我通过使用重印库解决了这个问题:https://github.com/ajalt/reprint
似乎更像是硬件问题,
- 尝试删除所有指纹并添加新指纹,如果在添加新指纹(如
Hardware not ready
等(时出错,则表示硬件传感器有问题。 - 您也可以尝试在设备上拨打*#808#,然后转到指纹测试。并进行指纹自动测试,它将为您提供硬件传感器的简要诊断报告。
我记得很久以前,我遇到了同样的问题。这是支持库中FingerprintManagerCompat
类的问题。尝试使用平台中的FingerprintManager
类或更新到最新版本的支持库。
这是 Github 中指纹认证的简单示例,请检查并查看结果:
指纹认证
您还可以将此帮助程序方法用于进一步的用法:
public static boolean isFingerprintDefined(@NonNull Context context) {
return FingerprintManagerCompat.from(context).isHardwareDetected() && FingerprintManagerCompat.from(context).hasEnrolledFingerprints();
}