Отпечатки пальцев Android: hasEnrolledFingerprints вызывает исключение на некоторых Samsung
Я вижу много исключений в нашем производственном приложении, когда вы включаете отпечатки пальцев от пользователей Android 6, которые я не могу воспроизвести ни на одном из моих локальных устройств Samsung. Стек:
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
из библиотеки поддержки, и проверка корректно работает на других устройствах.
Я не хочу добавлять это разрешение в свое приложение - похоже, это не имеет никакого отношения к отпечаткам пальцев.
Кто-нибудь сталкивался с чем-то вроде этого?
Ответы
Ответ 1
Я столкнулся с той же проблемой на Samsung Galaxy S6, работая под управлением Android 6.0.1
Проблема вызвана вызовом
fingerprintManager.hasEnrolledFingerprints()
Я исправил это, добавив вызов для проверки аппаратного обеспечения до:
fingerprintManager.isHardwareDetected()
&& mFingerprintManager.hasEnrolledFingerprints()
Проверка отпечатков пальцев без имеющегося оборудования, похоже, вызывает это исключение на некоторых устройствах.