在Android Studios中,BiometricPrompt API包含一个名为onAuthenticationError的回调,当用户在BiometricPrompt对话框外触摸时,以及一旦用户尝试向设备输入无效的Biometric,就会触发该回调。但是Xamarin.Android平台中可用的BiometricPrompt API不提供onAuthenticationError回调。
我使用Android Studios创建了一个android应用程序来检查BiometricPrompt API,在那里我可以访问名为onAuthenticationError的回调。然后,我将应用程序部署到设备上并调试了该应用程序。当我触摸BiometricPrompt对话框外的任何区域时,都会触发上述回调,并且每次我为BiometricPrompt提供的无效输入超过5次时也会触发该回调。 然后,我尝试在Xamain.Android中开发相同的应用程序,但在那里找不到名为onAuthenticationError的回调。当我无法在上述回调中使用和部署设备中的应用程序并对其进行测试时,我无法处理两种情况 当用户触摸BiometricPrompt对话框外的任何区域,以及用户向BiometricPrompt提供无效输入超过5次的地方。
我的本机android代码段。
@RequiresApi(api = Build.VERSION_CODES.P)
private BiometricPrompt.AuthenticationCallback getAuthenticationCallback() {
return new BiometricPrompt.AuthenticationCallback() {
@Override
** public void onAuthenticationError(int errorCode,
CharSequence errString) {
notifyUser("Authentication error: " + errString);
super.onAuthenticationError(errorCode, errString);
}**
@Override
public void onAuthenticationHelp(int helpCode,
CharSequence helpString) {
super.onAuthenticationHelp(helpCode, helpString);
}
@Override
public void onAuthenticationFailed() {
super.onAuthenticationFailed();
}
@Override
public void onAuthenticationSucceeded(
BiometricPrompt.AuthenticationResult result) {
notifyUser("Authentication Succeeded");
super.onAuthenticationSucceeded(result);
}
};
}
我的Xamarin.Android代码段
public class BiometricAuthCallBacks : BiometricPrompt.AuthenticationCallback
{
public TaskCompletionSource<LocalAuthStatus> promise = new TaskCompletionSource<LocalAuthStatus>();
private int failCount;
public override void OnAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result)
{
base.OnAuthenticationSucceeded(result);
promise.TrySetResult(LocalAuthStatus.Success);
//Success(result);
}
public override void OnAuthenticationFailed()
{
base.OnAuthenticationFailed();
failCount++;
if (failCount>=5)
{
promise.TrySetResult(LocalAuthStatus.Fail);
}
//Failed();
}
public override void OnAuthenticationHelp([GeneratedEnum] BiometricAcquiredStatus helpCode, ICharSequence helpString)
{
base.OnAuthenticationHelp(helpCode, helpString);
promise.TrySetResult(LocalAuthStatus.Error);
//Help(helpCode, helpString);
}
}
我的问题是为什么我不能从Xamarin.Android平台访问onAuthenticationError回调,如何解决呢?