我已经在我的项目中实现了指纹生物识别身份验证。我已经设置了一个回退身份验证,以防用户想要通过单击"使用密码"按钮来使用模式/pin/passcode。我已经通过使用setDeviceCredentialAllowed(true(实现了这一点,它是第一次工作。但每当我再次这样做时,pattern/pin/passcode屏幕就再也不会出现。我在logcat控制台中得到以下日志:
BiometricPromptCompat:无法检查设备凭据。父母亲未找到处理程序
这是我的代码供参考。提前谢谢。
executor = ContextCompat.getMainExecutor(this);
biometricPrompt = new BiometricPrompt(MainActivity.this,
executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode,
@NonNull CharSequence errString) {
super.onAuthenticationError(errorCode, errString);
Toast.makeText(getApplicationContext(),
"Authentication error: " + errString, Toast.LENGTH_SHORT)
.show();
}
@Override
public void onAuthenticationSucceeded(
@NonNull BiometricPrompt.AuthenticationResult result) {
super.onAuthenticationSucceeded(result);
Toast.makeText(getApplicationContext(),
"Authentication succeeded!", Toast.LENGTH_SHORT).show();
}
@Override
public void onAuthenticationFailed() {
super.onAuthenticationFailed();
Toast.makeText(getApplicationContext(), "Authentication failed",
Toast.LENGTH_SHORT)
.show();
}
});
promptInfo = new BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using your biometric credential")
.setDeviceCredentialAllowed(true)
.setConfirmationRequired(true)
.build();
biometricPrompt.authenticate(promptInfo);
我只在小米设备中遇到过这个问题,如果我必须再次调用生物特征验证来修复这个错误,我每次都必须创建一个新的PromptInfo,而不是重复使用第一个。
val promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle(getString(R.string.authenticate_card_creation))
.setSubtitle(getString(R.string.authenticate_creation_description_virtual))
.setDeviceCredentialAllowed(true)
.setConfirmationRequired(false)
.build()