web-dev-qa-db-ja.com

androidで指紋認証のデバイス互換性を確認する方法

私はAndroid 6.0 apiを使用して指紋認証を使用しています。現在のデバイスが指紋認証をサポートしている場合、指紋認証を行います。それ以外の場合は通常の方法でログインします応用。

だから、誰でもAndroidで指紋認証のデバイス互換性を確認する方法を教えてくれます。

前もって感謝します。

37
Lokesh

isHardwareDetectedクラスでFingerprintManagerメソッドを使用する必要があります。

指紋ハードウェアが存在し、機能しているかどうかを判断します。ハードウェアが存在し機能している場合は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の指紋機能へのアクセス許可を追加することを忘れないでください。 API 28以降:

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

API28より前:

<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 
}
71
LaurentY

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

API 27以前

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

API 28以降

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

このメソッドは、すべての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();
            }
        }
2
Hitesh Sahu

biometricPromptの実装には許可は必要ありません。

    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
}
    [BiometricPrompt][1]
0
chock2099