我有一个允许用户使用指纹身份验证登录的应用程序。该功能已经投入生产几个月了,但在最后一天我开始看到许多这样的异常:
java.lang.SecurityException: Must have android.permission.USE_FINGERPRINT permission.: 用户 ##### 和当前进程都没有 android.permission.USE_FINGERPRINT。
当我调用 fingerprintManager.isHardwareDetected()
检查设备是否支持指纹认证时发生崩溃。我在manifest中声明了USE_FINGERPRINT
权限,不知道为什么系统会认为进程没有这个权限。这不应该是我必须在运行时检查的内容,因为 USE_FINGERPRINT
是正常权限。
这几个月来一直运行良好,当它昨天开始崩溃时,我们已经发布了大约一个月的稳定版本。这个问题听起来几乎与这个 FingerprintManager.isHardwareDetected() throwing java.lang.SecurityException? 相同.我只在 Oreo 设备上看到崩溃。
我目前的计划是捕获安全异常
并继续进行,就好像设备没有硬件一样,但我担心这可能意味着没有人能够使用该功能进行登录如果此问题仍然存在。最近有没有其他人遇到过这个异常(exception)的问题?或者,如果没有,是否有人对为什么这可能会像这样突然开始发生有任何想法?感谢您的帮助!
最佳答案
改为使用 FingerprintManagerCompat,它为我正确处理了权限。
此外,您可能希望在 Android list 中声明权限:
<!-- Fingerprint -->
<uses-permission-sdk-23 android:name="android.permission.USE_FINGERPRINT" />
请注意,我使用了 uses-permission-sdk-23,因为我发现 FingerprintManager 在旧版本的 Android 中工作不可靠,我知道有一些带有指纹识别器的三星 Galaxy 设备,但在 API 23 之前你授予安装时的权限;这更多地取决于您的市场。尝试一下,看看它是否对您的用户有影响。
参见:https://developer.android.com/guide/topics/manifest/uses-permission-sdk-23-element
关于android - 用户和当前进程都没有 android.permission.USE_FINGERPRINT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51636350/