android - 如何检查设备是否具有指纹功能,然后在 Android 中使用
问题描述
我正在使用此权限
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
检查设备是否有指纹。这就是我在kotlin中检查它的方式
val fingerSensorManager = FingerSensorManager(this)
fingerSensorManager.isFingerPrintAvailable()
它工作正常,但Android 8 and above
它抛出异常。
如何检查指纹并在所有版本中使用它?我知道还有另一种适用于 Android 8 及更高版本的方法,但我很困惑如何实现它以使其适用于每台设备
解决方案
API 28 的最新版本
AndroidManifest.xml
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
现在,您可以使用:
val executor = activity.mainExecutor
val cancelListener = DialogInterface.OnClickListener { _, _ -> })
val biometricPrompt = BiometricPrompt.Builder(context)
.setTitle("Title")
.setSubtitle("Subtitle")
.setDescription("Description")
.setNegativeButton("Cancel", executor, cancelListener)
.build()
下一个代码适用于低于 API 28 的版本
此类在 API 级别 28 中已弃用。请参阅 BiometricPrompt ,它在启动身份验证时显示系统提供的对话框。在设备可能具有不同类型的生物特征身份验证的世界中,拥有系统提供的身份验证对话框更为现实,因为该方法可能因供应商/设备而异。
我建议你阅读这个线程:
另外,请关注另一个线程:
您必须将依赖项添加到您的“gradle”文件中
compile "com.android.support:support-v4:23.0.0"
基本上,如果我正确理解了您的问题,您想知道设备是否具有指纹硬件和功能。然后你可以使用:
// 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" />
希望对您有所帮助。
推荐阅读
- java - 类型推断在 java 中究竟是如何工作的?
- python - 随机应用 Keras `PreprocessingLayer`
- python - AWS Lambda 上的 Pytesseract:tesseract 未安装或不在您的 PATH 中
- python - RGB 4 代码?0、255、255、197(最后一个值是多少)
- function - 工程方程求解器 - 函数
- r - 使用包含在标题中的信息从 Excel 导入 R 中的数据
- c# - 实现预期目标的编码方法更少
- flutter - 等待一个函数在 ListView 中完成
- android - “无法访问主线程上的数据库,因为它可能会长时间锁定 UI”启动协程错误
- express - 如何在 Handlebars 中显示从 express js 传输的数据?