“ fingerprintManager !!。isHardwareDetected”始终返回true

时间:2019-08-28 05:04:02

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

enter image description here

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

但是

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

对于任何设备始终返回true。

2 个答案:

答案 0 :(得分:0)

确保您正在使用

<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 }

答案 1 :(得分:0)

您应该从使用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()
   }
}