问题描述: 在使用BiometricPromptCompat进行设备凭据检查时,可能会遇到以下错误信息:"BiometricPromptCompat: 检查设备凭据失败。未找到父处理程序。"
解决方法: 这个错误通常是由于未正确设置Activity的父处理程序引起的。要解决这个问题,需要在启动Activity时设置正确的父处理程序。
以下是一个示例代码,演示如何正确设置Activity的父处理程序:
import androidx.appcompat.app.AppCompatActivity;
import androidx.biometric.BiometricPrompt;
import androidx.core.content.ContextCompat;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import java.util.concurrent.Executor;
public class MainActivity extends AppCompatActivity {
private Executor executor;
private BiometricPrompt biometricPrompt;
private BiometricPrompt.PromptInfo promptInfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
executor = ContextCompat.getMainExecutor(this);
biometricPrompt = new BiometricPrompt(MainActivity.this,
executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode,
CharSequence errString) {
super.onAuthenticationError(errorCode, errString);
Log.d("BiometricPromptCompat", "Authentication error: " + errString);
}
@Override
public void onAuthenticationSucceeded(
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 Authentication")
.setSubtitle("Please verify your fingerprint")
.setNegativeButtonText("Cancel")
.build();
biometricPrompt.authenticate(promptInfo);
}
}
请注意,这里的BiometricPromptCompat已被替换为BiometricPrompt,因为BiometricPromptCompat是过时的。
在上述示例中,我们设置了MainActivity作为BiometricPrompt的父处理程序。确保在使用BiometricPrompt时,正确设置Activity的父处理程序即可解决该错误。