FingerprintManagerCompat方法与三星设备有问题

Anx*_*tta 10 android fingerprint

问题

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)
Run Code Online (Sandbox Code Playgroud)

此问题仅发生在某些三星设备上:

  • Galaxy S6 Active(marinelteatt)
  • Galaxy On5(on5ltemtr)
  • Galaxy J7(2016)(j7eltetmo)

(崩溃报告中的数据)


目前的研究解决方案

在研究问题之后,我发现的唯一解决方案是向清单添加以下权限:

<permission
    android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
    android:protectionLevel="signature"/>
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,我不确定这是否是最好或最合适的解决方案.


为什么抛出这个异常?以上解决方案是否正确?

我真的想了解更多相关信息.

谢谢!

Anx*_*tta 3

我找到了三星的支持线程,其中提到这是设备的固件问题。

关联

我只是在代码周围添加了一个 try/catch 来防止崩溃。

这个问题应该在三星固件更新中得到解决。