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

Posted

技术标签:

【中文标题】用户和当前进程都没有 android.permission.USE_FINGERPRINT【英文标题】:Neither user nor current process has android.permission.USE_FINGERPRINT 【发布时间】:2019-01-09 04:56:33 【问题描述】:

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

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

当我调用fingerprintManager.isHardwareDetected()检查设备是否支持指纹认证时发生崩溃。我在manifest中声明了USE_FINGERPRINT权限,所以不知道为什么系统会认为进程没有这个权限。这不应该是我必须在运行时检查的东西,因为USE_FINGERPRINT 是一个正常的权限。

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

我目前的计划是抓住Security Exception 并继续进行,就好像设备没有硬件一样,但我担心这可能意味着如果这个问题仍然存在,没有人能够使用该功能进行登录。有没有其他人最近遇到过这个例外的问题?或者,如果没有,是否有人知道为什么会突然像这样开始发生这种情况?感谢您的帮助!

【问题讨论】:

【参考方案1】:

使用 FingerprintManagerCompat 代替,它为我正确处理权限。

见: https://developer.android.com/reference/android/support/v4/hardware/fingerprint/FingerprintManagerCompat

此外,您可能希望在 Android 清单中声明权限:

<!-- 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

【讨论】:

谢谢!我会试试 FingerprintManagerCompat。我仍然希望我能理解为什么它在生产中放置了这么长时间后现在才成为一个问题。猜猜它可能只是一些android错误。我确实在清单中也列出了该权限(没有 sdk-23 部分),但是在决定是否允许指纹使用之前,我在代码中对 23 及更高版本进行了 sdk 检查(这意味着只有 M 及更高版本的设备是进入 isHardwareDetected 检查)。

以上是关于用户和当前进程都没有 android.permission.USE_FINGERPRINT的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.SecurityException:需要 READ_PHONE_STATE:用户 10210 和当前进程都不是 .. 仅在 HTC 手机中

linux screen --解决会话终止当前进程断开的问题!

如何在当前用户下启动进程?

有没有办法在 Windows 上使用 Qt 列出当前进程?

虚拟内存管理简要分析

在当前进程下取得当前登陆用户