Android指纹:HasEnrolled指纹在某些三星上触发异常

Android指纹:HasEnrolled指纹在某些三星上触发异常,android,android-fingerprint-api,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.

我在我们的生产应用程序中看到了很多例外,当启用来自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
这只是使用支持库中的标准
FingerprintManagerCompat
类,检查在其他设备上正常工作

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


有人遇到过类似的问题吗?

我在运行安卓6.0.1的三星Galaxy S6上遇到过同样的问题

这个问题是由打电话引起的

fingerprintManager.hasEnrolledFingerprints()
我通过在以下操作之前添加一个检查硬件的调用来修复此问题:

fingerprintManager.isHardwareDetected()
    && mFingerprintManager.hasEnrolledFingerprints()

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

我确实这样做了,但仍然存在此问题。我把这些信息添加到我的问题中。谢谢您的输入。@kos您在哪些设备上看到了这个问题?我也收到了相同的错误。我检查了我的代码,在调用HasEnrolled Fingerprints()之前,我刚刚添加了hardwareControl。你还有别的想法吗?@atasoyh不,对不起。这为我解决了当天的问题。我没有做更多的测试。这段代码对我来说很有用,三星J1 Mini 6.0.1。在调用
hasEnrolled fingerprints()
之前,我首先检查了
Ishardware是否检测到()
,为了重现此问题,您需要注册指纹,但不需要屏幕锁定:滑动或无。否则,就没有问题了。不管怎样,这种情况有什么解决方案吗?@Petrakeas对于启用指纹但没有锁屏的情况,我已经检查了
KeyguardManager.isKeyguardSecurity()
在我的S7中,问题只在
isKeyguardSecurity()返回false的情况下重现。在@David Medenjak的答案中调用这两个方法解决了这个问题,即使在这种情况下也是如此。@Petrakeas我需要做一件额外的事情来重现这个问题。所以,首先需要注册指纹,并将屏幕锁定设置为“滑动”或“无”。然后我不得不重新启动设备。在那之后,我能够不断地复制这个问题。正如你提到的,David Medenjak的答案解决了这个问题。@Wirling在我的华为设备上,如果我将屏幕锁设置为“刷卡”或“无”,那么它会删除所有注册的指纹。