如何在 android 中检查指纹认证的设备兼容性

How to check device compatibility for finger print authentication in android

我正在使用 android 6.0 api 进行指纹认证。 我的要求是,如果当前设备支持指纹认证,那么我将通过指纹认证,否则将使用正常方式登录应用程序。

所以,任何人都可以告诉我,如何在 android 中检查指纹认证的设备兼容性。

提前致谢。

您必须在 FingerprintManager class 上使用方法 isHardwareDetected

Determine if fingerprint hardware is present and functional. Returns true if hardware is present and functional, false otherwise.

// 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 class:

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 
}

只是跟进 LaurentY 的回答。 您需要获得访问指纹扫描仪的权限。为此,您需要将其添加到您的清单中。

API 27 岁及之前

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

API 28 岁及以后

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

此方法适用于所有 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();
            }
        }

实施 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]