Подтвердить что ты не робот

Как проверить совместимость устройства для проверки подлинности отпечатка пальца в android

Я работаю с проверкой подлинности пальца с помощью android 6.0 api. Мое требование в том, что если текущее устройство поддерживает проверку подлинности отпечатка пальца, тогда я пройду проверку подлинности на принтере, иначе будет использоваться обычный способ входа в приложение.

Итак, любой может сказать мне, как проверить совместимость устройств для проверки подлинности отпечатка пальца в android.

Спасибо заранее.

4b9b3361

Ответ 1

Вы должны использовать метод isHardwareDetected в классе FingerprintManager.

Определите, присутствует ли аппаратное обеспечение для идентификации отпечатков пальцев и работает ли оно. Возвращает Значение true, если оборудование присутствует и работает, в противном случае - значение false.

// Check if we're running on Android 6.0 (M) or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    //Fingerprint API only available on from Android 6.0 (M)
    FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
    if (!fingerprintManager.isHardwareDetected()) { 
        // Device does not support fingerprint authentication     
    } else if (!fingerprintManager.hasEnrolledFingerprints()) { 
        // User hasn't enrolled any fingerprints to authenticate with 
    } else { 
        // Everything is ready for fingerprint authentication 
    }
}

Не забудьте добавить разрешение на доступ к функциям отпечатков пальцев в AndroidManifest. Начиная с API 28:

<uses-permission android:name=" android.permission.USE_BIOMETRIC" />

До API28:

<uses-permission android:name="android.permission.USE_FINGERPRINT" />

с библиотекой поддержки

Если вы не хотите проверять Build.VERSION, вы также можете проверить на устройстве ниже Android 6.0 с помощью библиотеки поддержки

Добавить зависимость:

compile "com.android.support:support-v4:23.0.0"

И используйте класс FingerprintManagerCompat следующим образом:

FingerprintManagerCompat fingerprintManagerCompat = FingerprintManagerCompat.from(context);

if (!fingerprintManagerCompat.isHardwareDetected()) { 
    // Device does not support fingerprint authentication     
} else if (!fingerprintManagerCompat.hasEnrolledFingerprints()) { 
    // User hasn't enrolled any fingerprints to authenticate with 
} else { 
    // Everything is ready for fingerprint authentication 
}

Ответ 2

Просто продолжение ответа LaurentY. Вам необходимо разрешение для доступа к сканеру отпечатков пальцев. И для этого вам нужно добавить это в свой манифест.

API 27 и ранее

<uses-permission android:name="android.permission.USE_FINGERPRINT" />

API 28 и более поздние версии

<uses-permission android:name="android.permission.USE_BIOMETRIC" />

Ответ 3

Этот метод работает для всех версий Android, а также для проверки разрешения

 private boolean isSensorAvialable() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                return ActivityCompat.checkSelfPermission(AppContext, Manifest.permission.USE_FINGERPRINT) == PackageManager.PERMISSION_GRANTED &&
                        AppContext.getSystemService(FingerprintManager.class).isHardwareDetected();
            } else {
                return FingerprintManagerCompat.from(AppContext).isHardwareDetected();
            }
        }

Ответ 4

Для реализации BiometricPrompt разрешения не требуется:

    FingerprintManagerCompat fingerprintManagerCompat = FingerprintManagerCompat.from (context);

if (! fingerprintManagerCompat.isHardwareDetected ()) {
     // Device does not support fingerprint authentication
} else if (! fingerprintManagerCompat.hasEnrolledFingerprints ()) {
     // User hasn't enrolled any fingerprints to authenticate with
} else {
     // Everything is ready for fingerprint authentication
}
    [BiometricPrompt][1]