Отпечатки пальцев 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 из библиотеки поддержки, и проверка корректно работает на других устройствах.

Я не хочу добавлять это разрешение в свое приложение – похоже, это не имеет никакого отношения к отпечаткам пальцев.

Кто-нибудь сталкивался с чем-то подобным?

Я столкнулся с той же проблемой на Samsung Galaxy S6, работая под управлением Android 6.0.1

Проблема была вызвана вызовом

 fingerprintManager.hasEnrolledFingerprints() 

Я исправил его, добавив вызов для проверки оборудования раньше:

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

Проверка на отпечатки пальцев без аппаратного обеспечения, похоже, вызывает это исключение на некоторых устройствах.