用户或当前进程都没有android.permission.USE_FINGERPRINT

时间:2018-08-01 14:50:09

标签: android android-permissions android-8.0-oreo android-fingerprint-api android-8.1-oreo

我有一个允许用户使用指纹认证登录的应用程序。该功能已经投入生产了几个月,但是在最后一天,我开始看到许多此类异常:

java.lang.SecurityException: Must have android.permission.USE_FINGERPRINT permission.: Neither user ##### nor current process has android.permission.USE_FINGERPRINT.

当我致电fingerprintManager.isHardwareDetected()来检查设备是否支持指纹认证时,发生崩溃。我在清单中声明了USE_FINGERPRINT权限,所以我不知道为什么系统会认为进程没有此权限。由于USE_FINGERPRINT是正常权限,因此我不必在运行时检查此内容。

这已经工作了好几个月了,昨天它开始崩溃时,我们已经稳定发行了一个月左右。这个问题听起来几乎与此FingerprintManager.isHardwareDetected() throwing java.lang.SecurityException?相同。我只在Oreo设备上看到崩溃。

我当前的计划是捕获Security Exception并像设备没有硬件一样进行操作,但是我担心的是,如果此问题仍然存在,这可能意味着没有人可以使用该功能进行登录。最近有人有这个例外的问题吗?否则,是否有人对为什么突然开始这样的事情有任何想法?感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

请改用FingerprintManagerCompat,它可以为我正确处理权限。

请参阅: https://developer.android.com/reference/android/support/v4/hardware/fingerprint/FingerprintManagerCompat

另外,您可能想在Android清单中声明权限:

<!-- Fingerprint -->
    <uses-permission-sdk-23 android:name="android.permission.USE_FINGERPRINT" />

请注意,我使用了using-permission-sdk-23,因为我发现FingerprintManager在旧版本的Android中无法可靠运行,所以我知道有些三星Galaxy设备带有指纹读取器,但是在授予API 23之前安装时的权限;这更多取决于您的市场。尝试一下,看看它是否对您的用户有所帮助。

请参阅:https://developer.android.com/guide/topics/manifest/uses-permission-sdk-23-element