2015-12-22 11 views
22

アンドロイド6.0 APIを使用して指紋認証を行っています。 私の要件は、現在のデバイスがフィンガープリント認証をサポートしている場合、フィンガープリント認証を行います。それ以外の場合、通常の方法でアプリケーションにログインします。アンドロイドでの指紋認証のデバイス互換性を確認する方法

だから、アンドロイドでの指紋認証のデバイス互換性をチェックする方法を教えてください。

ありがとうございます。

答えて

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

をチェックし、ハードウェアが見つからない場合にはplaystoreに記載されたばかりのアプリケーションを防ぐ方法かとの互換性はありませんがあります応用? – Nirav

+0

新しい質問ですので、質問を追加して回答します – LaurentY

+0

保存された私の日..すごい投稿@LaurentY –

5

だけLaurentYの答えにフォローアップ。 指紋スキャナにアクセスするためのアクセス許可が必要です。そしてそれのために、これをマニフェストに追加する必要があります。

<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(); 
      } 
     } 
関連する問題