问题
不会提示生物识别虹膜和面部检测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)
题
为什么其他生物识别身份验证不提示使用加密对象身份验证。
最佳答案
有些设备只有一个外形,有些则有很多外形。您的应用最终使用哪种尺寸并不完全取决于您;这取决于OEM实施。如this blog post中所述,形状系数是“强”还是“弱”并不取决于您的代码-OEM决定。但是,可以通过在调用CryptoObject
时指定authenticate()
来请求设备对应用程序使用强身份验证。
您正在体验的是设备的OEM决定将指纹作为强生物识别技术的默认设置。因此,当您将CryptoObject
传递给authenticate()
时,这些设备会向用户显示指纹的UI。