如何检查设备是否具有指纹功能,然后在Android中使用它

Zoh*_*Ali 6 android kotlin android-fingerprint-api

我正在使用此权限

<uses-permission android:name="android.permission.USE_FINGERPRINT" />
Run Code Online (Sandbox Code Playgroud)

检查设备是否有指纹。这就是我在 kotlin 中检查它的方式

val fingerSensorManager = FingerSensorManager(this)
fingerSensorManager.isFingerPrintAvailable()
Run Code Online (Sandbox Code Playgroud)

它工作正常,但会Android 8 and above引发异常。

如何检查指纹并在所有版本中使用它?我知道还有另一种适用于 Android 8 及更高版本的方法,但我很困惑如何实现它以便它适用于每个设备

MrM*_*ins 5

API 28 最新动态

\n\n

AndroidManifest.xml

\n\n
    <uses-permission android:name="android.permission.USE_FINGERPRINT"/>\n<uses-permission android:name="android.permission.USE_BIOMETRIC"/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,您可以使用:

\n\n
val executor = activity.mainExecutor\nval cancelListener = DialogInterface.OnClickListener { _, _ -> })\nval biometricPrompt = BiometricPrompt.Builder(context)\n  .setTitle("Title")\n  .setSubtitle("Subtitle")\n  .setDescription("Description")\n  .setNegativeButton("Cancel", executor, cancelListener)\n  .build()\n
Run Code Online (Sandbox Code Playgroud)\n\n

下一个代码适用于低于 API 28 的版本

\n\n
\n

此类在 API 级别 28 中已弃用。请参阅 BiometricPrompt,它在启动身份验证时显示系统提供的对话框。在设备可能具有不同类型的生物识别身份验证的世界中,拥有系统提供的身份验证对话框更为现实,因为该方法可能因供应商/设备而异。

\n
\n\n

我建议您阅读此主题:

\n\n

如何将指纹验证添加到您的 Android 应用程序

\n\n

另外,请关注另一个线程:

\n\n

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

\n\n

您必须将依赖项添加到 \xc2\xb4gradle\xc2\xb4 文件

\n\n
compile "com.android.support:support-v4:23.0.0"\n
Run Code Online (Sandbox Code Playgroud)\n\n

基本上,如果我正确理解你的问题,你想知道该设备是否具有指纹硬件和功能。那么你可能会使用:

\n\n
// Check if we\'re running on Android 6.0 (M) or higher\nif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {\n    //Fingerprint API only available on from Android 6.0 (M)\n    FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);\n    if (!fingerprintManager.isHardwareDetected()) { \n        // Device doesn\'t support fingerprint authentication     \n    } else if (!fingerprintManager.hasEnrolledFingerprints()) { \n        // User hasn\'t enrolled any fingerprints to authenticate with \n    } else { \n        // Everything is ready for fingerprint authentication \n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

不要忘记在 AndroidManifest.xml 中添加访问指纹功能的权限。自 API 28 起:

\n\n
<uses-permission android:name=" android.permission.USE_BIOMETRIC" />\n
Run Code Online (Sandbox Code Playgroud)\n\n

API28之前:

\n\n
<uses-permission android:name="android.permission.USE_FINGERPRINT" />\n
Run Code Online (Sandbox Code Playgroud)\n\n

希望对您有帮助。

\n

  • 它表明 Java 中已弃用“FingerprintManager”、“isHardwareDetected()”和“hasEnrolledFingerprints()” (2认同)