2015-12-22 49 views
22

我正在使用android 6.0 api進行手指打印身份驗證。 我的要求是,如果當前設備支持指紋認證,那麼我將通過指紋認證,否則將使用正常的方式登錄應用程序。如何檢查手指打印身份驗證的設備兼容性android

因此,任何人都可以告訴我,如何檢查Android的指紋認證設備兼容性。

在此先感謝。

回答

47

您必須使用FingerprintManager類中的方法isHardwareDetected

確定指紋硬件是否存在並且功能正常。返回 如果硬件存在且有效,則返回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 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指紋功能:

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

有沒有一種方法,以防止萬一在Play商店中申請上市的硬件沒有發現或與不兼容應用? – Nirav

+0

這是一個新問題,所以請添加一個問題,我會回答 – LaurentY

+0

保存我的日子..真棒帖子@LaurentY –

5

只是跟進LaurentY的答案。 您需要獲得訪問指紋掃描儀的權限。爲此,您需要將此添加到您的Manifest。

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

此方法適用於所有的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(); 
      } 
     }