我有一个允许用户使用指纹认证登录的应用程序。该功能已经投入生产了几个月,但是在最后一天,我开始看到许多此类异常:
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
并像设备没有硬件一样进行操作,但是我担心的是,如果此问题仍然存在,这可能意味着没有人可以使用该功能进行登录。最近有人有这个例外的问题吗?否则,是否有人对为什么突然开始这样的事情有任何想法?感谢您的帮助!
答案 0 :(得分:0)
请改用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