Android M FingerprintManager.isHardwareDetected () возвращает ложь на Samsung Galaxy S5

Я только что обновил Verizion Samsung Galaxy S5 (SM-G900V) до версии G900VVRU2DPD1 с помощью инструкции, приведенной наhttp://www.androidofficer.com/2016/06/g900vvru2dpd1-android-601-marshmallow.html

Когда я запускаю приведенный ниже код, isHardwareDetected () возвращает false. Я ожидаю, что это вернет «истина».

Поиск в Google, который я сделал, не привел к получению какой-либо информации о том, что сканер отпечатков пальцев S5 поддерживается в Marshmallow.

У кого-нибудь есть какая-либо информация о поддерживаемом сканере отпечатков пальцев S5?

    FingerprintManager manager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE);
    if (manager != null) {

        if (ActivityCompat.checkSelfPermission(this, permission.USE_FINGERPRINT) !=
                PackageManager.PERMISSION_GRANTED) {
            retVal.append(INDENT).append("Fingerprint permission was not granted")
                    .append(EOL);
        } else {
            retVal.append(INDENT).append("Fingerprint hardware detected: ")
                    .append(manager.isHardwareDetected()).append(EOL);
            retVal.append(INDENT).append("Has Enrolled Fingerprint(s): ")
                    .append(manager.hasEnrolledFingerprints()).append(EOL);
        }
    } else {
        retVal.append(INDENT).append("no FingerprintManager available").append(EOL);
    }
 Miguel27 сент. 2016 г., 17:52
Вы решили эту проблему ?? У меня та же проблема

Ответы на вопрос(1)

Решение Вопроса

что Android по умолчанию API не может обрабатывать некоторые устройства Samsung, поэтому решение состоит в том, чтобы добавить библиотеки Samsung для этой проблемы.

Вы можете найти некоторую документацию и библиотеки здесь:http://developer.samsung.com/galaxy/pass

После добавления библиотек вы должны добавить новое разрешение в свой манифест:

<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />

И, наконец, вы можете использовать этот метод:

private boolean isFingerprintSupported() {
  boolean isFingerprintSupported = fingerprintManager != null && fingerprintManager.isHardwareDetected();
  if (!isFingerprintSupported && SsdkVendorCheck.isSamsungDevice()) {
    Spass spass = new Spass();
    try {
        spass.initialize(context);
        isFingerprintSupported = spass.isFeatureEnabled(Spass.DEVICE_FINGERPRINT);
    } catch (SsdkUnsupportedException | UnsupportedOperationException e) {
        // Error handling
    }
  }
  return isFingerprintSupported;
}
 Shishir Shetty21 янв. 2019 г., 19:42
Может кто-нибудь подтвердить это на Samsung Galaxy J7?
 Nguyen Minh Hien22 авг. 2018 г., 14:01
Если вам необходимо проверить наличие зарегистрированных пальцев, используйте это: SpassFingerprint spassFingerprint = new SpassFingerprint (context); return spassFingerprint.hasRegisteredFinger ();
 Kennedy17 июн. 2017 г., 11:36
Эй, Мигель, будет ли это работать для других устройств, не Samsung?
 Jules17 июл. 2017 г., 10:20
@ Кеннеди нет,developer.samsung.com/galaxy/pass говорит о том, какие устройства могут использовать их SDK: «Любое мобильное устройство Samsung, которое поддерживает датчик отпечатков пальцев и службу идентификации отпечатков пальцев с Android 4.2 (Jelly Bean API 17) и выше».

Ваш ответ на вопрос