Android指纹:hasEnrolledFingerprints触发了一些三星的例外

kos*_*kos 15 android android-fingerprint-api

我在生产应用程序中看到很多异常,因为它们来自Android 6用户的指纹,我无法在我的任何本地三星设备上重现.堆栈跟踪是:

Message: SecurityException: Permission Denial: getCurrentUser() from pid=24365, uid=10229 requires android.permission.INTERACT_ACROSS_USERS
android.os.Parcel.readException in Parcel.java::1620
android.os.Parcel.readException in Parcel.java::1573
android.hardware.fingerprint.IFingerprintService$Stub$Proxy.hasEnrolledFingerprints in IFingerprintService.java::503
android.hardware.fingerprint.FingerprintManager.hasEnrolledFingerprints in FingerprintManager.java::762
android.support.v4.hardware.fingerprint.FingerprintManagerCompatApi23.a in SourceFile::39
android.support.v4.hardware.fingerprint.FingerprintManagerCompat$Api23FingerprintManagerCompatImpl.a in SourceFile::239
android.support.v4.hardware.fingerprint.FingerprintManagerCompat.a in SourceFile::66
Run Code Online (Sandbox Code Playgroud)

这只是使用FingerprintManagerCompat支持库中的标准类,并且检查在其他设备上正常工作.

我不想将此权限添加到我的应用程序 - 它似乎与指纹无关.

有人遇到过这样的事吗?

Dav*_*jak 19

我在运行Android 6.0.1的三星Galaxy S6上遇到了同样的问题

问题是由呼叫造成的

fingerprintManager.hasEnrolledFingerprints()
Run Code Online (Sandbox Code Playgroud)

我之前通过添加一个检查硬件的调用来修复它:

fingerprintManager.isHardwareDetected()
    && mFingerprintManager.hasEnrolledFingerprints()
Run Code Online (Sandbox Code Playgroud)

在没有硬件可用的情况下检查指纹似乎会在某些设备上导致此异常.

  • 我这样做确实仍然存在问题.我在这个问题中添加了这些信息.感谢您的投入. (2认同)