我正在使用Android6.0API进行手指指纹认证。我的要求是,如果当前设备支持指纹身份验证,那么我将通过指纹认证,否则将使用正常方式登录应用程序。
所以,任何人都可以告诉我,如何检查设备兼容性,以便在android中进行指纹认证。
提前谢谢。
发布于 2015-12-22 13:36:30
您必须在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,也可以使用支持库检查低于Android6.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
}
发布于 2016-06-02 19:45:24
只是跟进劳伦蒂的答案。您需要获得访问指纹扫描仪的权限。为此,你需要把这个添加到你的宣言中。
API 27及之前
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
API 28及更高版本
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
发布于 2017-07-19 06:38:30
此方法适用于所有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();
}
}
https://stackoverflow.com/questions/34409969
复制相似问题