java.lang.SecurityException: Permission Denial: getCurrentUser() from pid=#####, uid=##### requires android.permission.INTERACT_ACROSS_USERS
at android.os.Parcel.readException(Parcel.java:1620)
at android.os.Parcel.readException(Parcel.java:1573)
at android.hardware.fingerprint.IFingerprintService$Stub$Proxy.hasEnrolledFingerprints(IFingerprintService.java:503)
at android.hardware.fingerprint.FingerprintManager.hasEnrolledFingerprints(FingerprintManager.java:768)
at android.support.v4.hardware.fingerprint.FingerprintManagerCompatApi23.hasEnrolledFingerprints(FingerprintManagerCompatApi23.java:39)
at android.support.v4.hardware.fingerprint.FingerprintManagerCompat$Api23FingerprintManagerCompatImpl.hasEnrolledFingerprints(FingerprintManagerCompat.java:239)
at android.support.v4.hardware.fingerprint.FingerprintManagerCompat.hasEnrolledFingerprints(FingerprintManagerCompat.java:66)
此问题仅发生在某些三星设备上:
(崩溃报告中的数据)
在研究问题后,我发现的唯一解决方案是向清单添加以下权限:
<permission
android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
android:protectionLevel="signature"/>
这看起来很奇怪,我不确定这是否是最佳解决方案。
为什么会抛出此异常?以上解决方案是否正确?
我真的想了解更多相关信息。
谢谢!
答案 0 :(得分:2)
答案 1 :(得分:0)
最后,我找到了重现此问题的方法。首先,您需要在设备上注册指纹并将锁屏设置为none
。然后我不得不重启设备并打开我的应用程序,呼叫hasEnrolledFingerprints()
。
如@AnxGotta所述,它似乎是由固件问题引起的。然而,我发现了一个更清洁的解决方案然后添加了try catch我只需要在isHardwareDetected()
之前致电hasEnrolledFingerprints()
。