web-dev-qa-db-fra.com

Comment vérifier la compatibilité des périphériques pour l'authentification par empreinte digitale dans Android

Je travaille avec l'authentification d'empreintes digitales avec Android 6.0 api. Mon exigence est la suivante: si le périphérique actuel prend en charge l’authentification par empreinte digitale, je passerai par l’authentification par empreinte digitale, sinon la méthode habituelle sera utilisée pour se connecter à l’application.

Ainsi, chacun peut me dire comment vérifier la compatibilité des appareils pour l'authentification d'empreinte digitale dans Android.

Merci d'avance.

31
Lokesh

Vous devez utiliser la méthode isHardwareDetected sur la classe FingerprintManager.

Déterminez si le matériel d'empreinte digitale est présent et fonctionnel. Résultats true si le matériel est présent et fonctionnel, false sinon.

// 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 
    }
}

N'oubliez pas d'ajouter la permission d'accéder aux fonctions d'empreinte digitale dans AndroidManifest . Depuis l'API 28:

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

Avant API28:

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

Avec bibliothèque de support

Si vous ne voulez pas vérifier Build.VERSION, il est également possible de vérifier le périphérique inférieur à Android 6.0 avec Support Library

Ajouter une dépendance:

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

Et utilisez la classe FingerprintManagerCompat comme ceci:

FingerprintManagerCompat fingerprintManagerCompat = FingerprintManagerCompat.from(context);

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

Juste un suivi de la réponse de LaurentY. Vous devez obtenir une autorisation pour accéder au lecteur d’empreintes digitales. Et pour cela, vous devez ajouter ceci à votre manifeste. 

API 27 et avant

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

API 28 et plus tard

<uses-permission Android:name="Android.permission.USE_BIOMETRIC" />
5
SanVed

Cette méthode fonctionne pour toutes les versions d'Android et vérifie également l'autorisation. 

 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();
            }
        }
1
Hitesh Sahu

vérifier cet exemple exemple de google 

0
iosMentalist