2015-12-22 10 views
22

Sto lavorando con l'autenticazione delle impronte digitali utilizzando Android 6.0 api. Il mio requisito è, se il dispositivo corrente supporta l'autenticazione tramite impronta digitale, quindi eseguirò l'autenticazione con impronta digitale altrimenti useremo il modo normale per accedere all'applicazione.Come verificare la compatibilità dei dispositivi per l'autenticazione delle impronte digitali in Android

Così, chiunque può dirmi, come verificare la compatibilità dei dispositivi per l'autenticazione di impronte digitali in Android.

Grazie in anticipo.

risposta

47

È necessario utilizzare il metodo isHardwareDetected nella classe FingerprintManager.

Determinare se l'hardware di impronte digitali è presente e funzionante. Restituisce true se l'hardware è presente e funzionale, falso altrimenti.

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

Non dimenticate di aggiungere il permesso di accedere alle funzioni di impronte digitali in AndroidManifest:

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

Con libreria di supporto

Se non si desidera controllare Build.VERSION , è anche possibile controllare sul dispositivo inferiore a Android 6.0 con Libreria di supporto

Aggiungere dipendenza:

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

E utilizzare FingerprintManagerCompat classe come questa:

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 
} 
+0

C'è un modo per evitare che l'applicazione da ottenere elencati playstore nel caso in cui l'hardware non si trova o non è compatibile con il applicazione? – Nirav

+0

È una nuova domanda quindi per favore aggiungi una domanda e ti risponderò – LaurentY

+0

Salvato il mio giorno..il post meraviglioso @LaurentY –

5

Solo un follow-up alla risposta di Laurenty. È necessario il permesso per accedere allo scanner di impronte digitali. E per questo è necessario aggiungere questo al tuo Manifesto.

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

Questo metodo funziona per tutte le versioni di Android e controllare anche il permesso

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(); 
      } 
     } 
Problemi correlati