众所周知,从android 9.0开始,android引入了 BiometricPrompt Api 来为不断增长的生物识别传感器(例如指纹,面部识别码等)提供标准的身份验证体验。
现在,有了这个新的BiometricPrompt Api用户,就可以通过指纹,面部扫描仪或虹膜扫描来验证身份(取决于他们的生物识别偏好)。 BiometricPrompt api将处理此问题,并将通过各种回调通知我们。
下面是我的代码,用于显示生物识别提示。
biometricPrompt = new BiometricPrompt.Builder(context)
.setTitle("FingerPrint Authentication")
.setSubtitle("Login via Fingerprint")
.setDescription("Touch Fingerprint Sensor")
.setNegativeButton("Cancel", context.getMainExecutor(),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Log.d(TAG,"Cancelled");
}
})
.build();
现在,如果您看到我的代码,则将标题设置为指纹认证。现在在设备设置中,如果用户将生物特征首选项设置为人脸ID 而不是 Fingerprint ,则此 biometricPrompt 将通过faceID对用户进行身份验证,即使用户继续触摸传感器也无法使用指纹传感器。这将引起混乱,因为生物识别标题说“指纹认证”,而用户实际上是通过 faceID 获得认证的
有什么方法可以得知用户选择了哪些生物特征首选项(例如,指纹或FaceID)?因此,基于该首选项,我可以在BiometricPrompt上显示适当的消息,因此用户不会感到困惑。
我已经浏览过BiometricPrompt的所有api,但可以找到与BiometricPreference相关的任何内容。
任何帮助将不胜感激。
最佳答案
到目前为止,我们尚无任何信息可知,去年已经开了一个问题来索要(https://issuetracker.google.com/issues/111315641)。由于Android试图简化开发人员在其应用程序中实现身份验证的路径,因此BiometricPrompt实现中缺少选项(请参见Android文档中的BiometricPrompt实现)。