安卓生物识别提示:当允许设备凭据时,将忽略人脸验证



我使用指纹、人脸和设备凭据(PIN/PASSCODE/PATHERN(集成了生物识别身份验证。但我在使用设备凭据时遇到了人脸验证的问题。这种情况发生在某些设备上。

当我集成指纹、人脸和设备凭据时。生物识别弹出窗口只检测指纹,并有一个移动到设备凭据的按钮。应显示人脸验证选项。

如果我集成了Face和设备凭据。生物特征弹出窗口被忽略,它会自动移动到输入设备凭据的屏幕上。在这种情况下,应该显示弹出窗口,用户可以通过面部进行身份验证,或者如果需要,可以通过按钮移动以使用设备凭据。

如果我在没有设备凭据的情况下集成指纹或人脸或两者。一切都很好。

这是我的设备凭据代码:

@Suppress("DEPRECATION")
fun createPromptInfo(activity: AppCompatActivity): BiometricPrompt.PromptInfo =
BiometricPrompt.PromptInfo.Builder().apply {
setTitle(activity.getString(R.string.title)
setSubtitle(activity.getString(R.string.subtitle))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
setAllowedAuthenticators(
BiometricManager.Authenticators.BIOMETRIC_STRONG or
BiometricManager.Authenticators.BIOMETRIC_WEAK or
BiometricManager.Authenticators.DEVICE_CREDENTIAL
)
} else {
setDeviceCredentialAllowed(true)
}
setConfirmationRequired(false)
}.build()

我在三星A30和三星A31上面临这个问题(两者的操作系统都是Android 10(。但当我在三星M33(安卓12(上测试时,一切都很好,没有这个问题。

很可能您不完全理解BiometricPrompt文档和Android生态系统。您尝试使用androidx.biometric库,该库处理">regular";生物特征认证。

问题不在BiometricPrompt API中,而在设备中。

在你的情况下,设备制造商已经通过指纹/人脸/虹膜实现了生物特征认证,但";忘记了";为第三方开发人员提供对此实现的访问权限。因此,设备制造商开发的预装(系统(应用程序可以使用生物识别技术(例如,Keyguard/device Unlock(,而银行应用程序、密码管理器和其他第三方应用程序则不能。

FaceUnlock慢慢开始在Android 12和更新版本上完全可以访问,这(再次(取决于设备制造商。在具有较旧操作系统版本的设备的情况下,当生物识别不可访问/未注册时,BiometricManager.Authenticators.DEVICE_CREDENTIAL允许用户对自己进行身份验证并解锁应用程序等。

所以从技术上讲,这个库在你们测试的所有设备上都能正常工作。

PS:一些供应商(如华为(为第三方开发人员提供API,您可以实现自己的解锁功能。

最后,即使内置的API不提供FaceUnlock功能,也可以使用已经实现身份验证的现有libs。

最新更新