当前位置: 首页 > 知识库问答 >
问题:

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

湛鸿雪
2023-03-14

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

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

提前谢谢。

共有3个答案

燕经国
2023-03-14

此方法适用于所有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();
            }
        }
尤博达
2023-03-14

这只是劳伦蒂回答的后续问题。您需要权限才能访问指纹扫描仪。为此,您需要将此添加到您的清单中。

API 27及之前

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

API 28及更高版本

<uses-permission android:name="android.permission.USE_BIOMETRIC" />
祖麻雀
2023-03-14

您必须在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" />

支持库

如果您不想检查构建。版本,也可以使用支持库在低于Android 6.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 
}
 类似资料:
  • 我正试图找到一种方法,通过指纹扫描验证来支持以下场景。我在一个应用程序上工作,该应用程序在企业环境中使用,一台Android设备可能会被许多用户共享。当前的指纹扫描API似乎遵循这样一种模式:用户向设备注册指纹,然后指纹扫描库基本上只是验证正在扫描的指纹是否与设备中本地存储的某些已知指纹匹配。这种模式与我的用例不兼容,因为我的每个用户每次需要使用应用程序时都可能会选择不同的Android设备。每个

  • 但即使我的设备设置为法语,它仍然显示英语。这个if语句有什么问题吗?如果有,那怎么办? 编辑:谢谢你的帮助。我很感激。

  • 我做了大量的研究,通过API搜索,并通过论坛寻找答案。最后决定加入stackoverflow! 问题是: 我想通过手机上的一块硬件得到手指的电容。 可能的解决方案: 我得出的结论是,尽管手机使用电容式触摸屏,但访问触摸屏上的电容信息是不可能的(除非有人知道怎么做?)。我考虑过使用指纹扫描仪,因为它是一个电容传感器(S5上的指纹扫描仪)。有没有办法只获取电容值而不是指纹扫描仪的图像?

  • 问题内容: 我有一个Java客户端正在调用Web服务操作,该操作将证书“ thumbprint”作为参数。我相信指纹是证书的公钥的某种SHA16哈希,采用十六进制字符串格式,但是我不确定。 .NET框架似乎包括一种获取此值的简单方法(X509Certificate2.Thumbprint属性)。在Windows中查看.cer文件的属性也会显示指纹,如下所示: 因此,我的问题是:如果我有java.s

  • SHA1发布 注意:storepass和keypass是应用Keystore密码,Keystore=Keystore路径,alias=密钥别名(创建Keystore时使用的名称).....

  • 我想在银行项目中通过android平板电脑记录客户数据,包括指纹。当客户存款或取款时,会通过指纹数据核实哪个客户。Android设备记录指纹数据并与Web服务器(asp.net)同步。那么,开发指纹验证的最佳方法是什么?如果指纹设备与Android平板电脑连接更容易,请建议我。