问题


不会提示生物识别虹膜和面部检测
biometricPrompt.authenticate(**crypto**, promptInfo)通话。


资料来源:


Securing data with BiometricPrompt(2019年5月19日)
One Biometric API Over all Android(2019年10月30日)
Biometrich API


用于测试的设备:


三星S8(Android OS 9)


身份验证步骤如下:


val biometricPrompt = BiometricPrompt(...)
val hintInfo = BiometricPrompt.PromptInfo.Builder()...
biometricPrompt.authenticate(promptInfo)(PFA:选项A,B)


还有另一种认证方法,它采用密码对象来确保


biometricPrompt.authenticate(crypto, promptInfo)。 (PFA:选项C)


在新旧API设备支持下,一切都按预期工作。除非实现对其他生物识别选项虹膜和使用面部检测的测试应用。

如果我跟随


biometricPrompt.authenticate(promptInfo)然后,应用程序仅根据用户首选项显示身份验证选项,用户必须从“设备设置”->“生物特征首选项”中进行选择。
并独立执行身份验证。 (PFA:选项A,B)
但是,如果使用biometricPrompt.**authenticate**(crypto, promptInfo),则仅显示指纹身份验证选项。对于其他首选项虹膜和面部检测,它在authenticate(..)方法调用上不显示任何内容。 (PFA:选项C)





为什么其他生物识别身份验证不提示使用加密对象身份验证。


android - BiometricPrompt虹膜和面部提示不适用于加密对象身份验证。 #AndroidX-LMLPHP

最佳答案

有些设备只有一个外形,有些则有很多外形。您的应用最终使用哪种尺寸并不完全取决于您;这取决于OEM实施。如this blog post中所述,形状系数是“强”还是“弱”并不取决于您的代码-OEM决定。但是,可以通过在调用CryptoObject时指定authenticate()来请求设备对应用程序使用强身份验证。

您正在体验的是设备的OEM决定将指纹作为强生物识别技术的默认设置。因此,当您将CryptoObject传递给authenticate()时,这些设备会向用户显示指纹的UI。

08-17 18:40