如何在 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]
我正在使用 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]