【问题标题】:"fingerprintManager!!.isHardwareDetected" always return true“fingerprintManager !!.isHardwareDetected”总是返回 true
【发布时间】:2019-08-28 05:04:02
【问题描述】:

我想知道,我的应用运行的设备是否支持指纹。

但是

if(!fingerprintManager!!.isHardwareDetected)
{
 Toast.makeText(context,"Your device doesn't support fingerprint authentication", Toast.LENGTH_SHORT).show()
} 

对于任何设备总是返回 true。

【问题讨论】:

    标签: android kotlin android-fingerprint-api android-biometric


    【解决方案1】:

    确保您正在使用

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

    还有

    if(ActivityCompat.checkSelfPermission(AppContext, Manifest.permission.USE_BIOMETRIC) == PackageManager.PERMISSION_GRANTED)
    { if (!fingerprintManager!!.isHardwareDetected)
         {  //permission granted but no hardware present
         } else {
            //permission granted and hardware present
    } else {
       // Permission not granted }
    

    【讨论】:

      【解决方案2】:

      您应该从使用 FingerprintManager 迁移到 BiometricPrompt。有a blog that shows just how to do so

      FingerprintManager API 不同,您可以通过一个方法调用BiometricManager.from(context).canAuthenticate() 来检查设备是否支持生物特征验证。这个单一的方法调用检查设备上是否有可用的生物识别硬件、用户是否注册了模板以及用户是否启用了生物识别身份验证。如果这三个都不正确,则无法显示生物特征提示。这是一种非常方便的方法,可以为您处理所有复杂问题。

      // Callback for the "authenticate" button in your app's UI.
      override fun onClick(view: View) {
         val promptInfo = createPromptInfo()
         if (BiometricManager.from(context)
                     .canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
             biometricPrompt.authenticate(promptInfo, cryptoObject)
         } else {
             loginWithPassword()
         }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-08-06
        • 2017-05-10
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多