Как проверить, есть ли на устройстве функция распознавания отпечатков пальцев, а затем использовать ее в Android - PullRequest
0 голосов
/ 14 декабря 2018

Я использую это разрешение

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

, чтобы проверить, есть ли на устройстве отпечаток пальца или нет.Вот как я проверяю его в kotlin

val fingerSensorManager = FingerSensorManager(this)
fingerSensorManager.isFingerPrintAvailable()

Работает нормально, но в Android 8 and above выдает исключение.

Как я могу проверить отпечатки пальцев, а также использовать его во всех версиях?Я знаю, что есть другой метод для Android 8 и выше, но я не совсем понимаю, как его реализовать, чтобы он работал на каждом устройстве

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Вы можете использовать биометрическую библиотеку от Androidx.Он все еще в альфа-версии, но пока работает хорошо.Хорошо, что вам не нужны две реализации для определенного уровня Android API.

fun isAvailable(context: Context): Boolean {
    val fingerprintManager = FingerprintManagerCompat.from(context)
    return fingerprintManager.isHardwareDetected && fingerprintManager.hasEnrolledFingerprints()
}
0 голосов
/ 14 декабря 2018

NEWEST FOR API 28

AndroidManifest.xml

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

Теперь вы можете использовать:

val executor = activity.mainExecutor
val cancelListener = DialogInterface.OnClickListener { _, _ -> })
val biometricPrompt = BiometricPrompt.Builder(context)
  .setTitle("Title")
  .setSubtitle("Subtitle")
  .setDescription("Description")
  .setNegativeButton("Cancel", executor, cancelListener)
  .build()

СЛЕДУЮЩИЙ КОД ДЛЯ ВЕРСИИ НИЖЕ, ЧЕМ API 28

Этот класс устарел на уровне API 28. Смотри BiometricPrompt, который показывает системный диалог при запускеаутентификация.В мире, где устройства могут иметь разные типы биометрической аутентификации, гораздо более реалистично иметь диалоговое окно аутентификации, предоставляемое системой, поскольку метод может различаться в зависимости от поставщика / устройства.

Я рекомендую вам прочитать эту ветку:

Как добавить проверку подлинности по отпечатку пальца в ваше приложение для Android

Также следуйте этой другой теме:

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

Вы должны добавить зависимость в свой файл 'gradle'

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

В принципе, если я правильно понял ваш вопрос, вы хотите знать, еслиУстройство имеет аппаратное обеспечение и функции отпечатков пальцев.Тогда вы можете использовать:

// 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 doesn't 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" />

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...