为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 BiometricManager 或 BiometricPrompt 检查生物识别硬件是否

如何使用 BiometricManager 或 BiometricPrompt 检查生物识别硬件是否

心有法竹 2023-06-28 15:58:38
我正在使用 BiometricPrompt 类实现生物识别身份验证。在调用方法之前如何检查硬件是否可用BiometricPrompt#authenticate?如何查看是否已登记生物识别?如何调用BiometricManager#canAuthenticate方法?我无法在 kotlin 中为 BiometricManager 类创建对象我当前的实现如下。    val executor = Executors.newSingleThreadExecutor()    val biometricPrompt = BiometricPrompt(this, executor, object : BiometricPrompt.AuthenticationCallback() {        override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {            super.onAuthenticationError(errorCode, errString)            Log.d("BIOMETRIC", "$errString $errorCode")            if (BiometricPrompt.ERROR_HW_NOT_PRESENT == errorCode || BiometricPrompt.ERROR_NO_BIOMETRICS == errorCode)                PreferenceHandler.setBiometricAvailable(this@LockActivity, false)            else                PreferenceHandler.setBiometricAvailable(this@LockActivity, true)        }        override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {            super.onAuthenticationSucceeded(result)        }        override fun onAuthenticationFailed() {            super.onAuthenticationFailed()            Log.d("BIOMETRIC", "FAILED")        }    })    val promptInfo = BiometricPrompt.PromptInfo.Builder()            .setTitle("App title")            .setSubtitle("")            .setDescription("Identify yourself by Biometrics")            .setNegativeButtonText("Use Password")            .build()    biometricPrompt.authenticate(promptInfo)
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

问题终于解决了


BiometricManagerandroidx 库中错过了课程


androidx.biometric:biometric:1.0.0-alpha04

将库版本更新为


androidx.biometric:biometric:1.0.0-beta01

现在您可以导入androidx.biometric.BiometricManager


您可以通过以下代码检查生物识别硬件的可用性并已注册生物识别:


object BiometricUtil {


fun isHardwareAvailable(context: Context): Boolean{

    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){

        val bm = BiometricManager.from(context)

        val canAuthenticate = bm.canAuthenticate()

        !(canAuthenticate == BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE || canAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE)


    } else {

        false

    }

}


fun hasBiometricEnrolled(context: Context): Boolean {

    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){

        val bm = BiometricManager.from(context)

        val canAuthenticate = bm.canAuthenticate()

        (canAuthenticate == BiometricManager.BIOMETRIC_SUCCESS)


    } else {

        false

    }

}

}


查看完整回答
反对 回复 2023-06-28
  • 1 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信