在MainActivity的onCreate()方法中进行以下更改:
1.设置当前Activity的Window属性,允许在Biometric指纹弹窗上方绘制屏幕
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
| WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
2.添加以下代码将屏幕设置为黑色
View decorView = getWindow().getDecorView();
decorView.setBackgroundColor(Color.BLACK);
3.将上述代码与打开Biometric指纹弹窗的代码结合使用,例如:
BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder()
.setTitle("指纹验证")
.setSubtitle("通过扫描指纹解锁")
.build();
BiometricPrompt biometricPrompt = new BiometricPrompt(MainActivity.this, executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
//指纹验证成功
}
@Override
public void onAuthenticationFailed() {
//指纹验证失败
}
});
biometricPrompt.authenticate(promptInfo);
View decorView = getWindow().getDecorView();
decorView.setBackgroundColor(Color.BLACK);
这样就可以在Biometric指纹弹窗出现时避免出现黑屏的问题。