错误日志:android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@b056a31 -- permission denied for window type 2038
private void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
View view = View.inflate(getApplicationContext(), R.layout.dialog_enterprise_certificate_status, null);
builder.setView(view);
final AlertDialog dialog = builder.create();
//设置弹出全局对话框,但是这句话并不能解决在android的其他手机上能弹出来(例如用户华为p10 就无法弹框)
// dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
//只有这样才能弹框
if (Build.VERSION.SDK_INT >= 26) {//8.0新特性
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
} else {
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
}
dialog.show();
// view.findViewById(R.id.tv_certificate_notice_confirm).setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// dialog.dismiss();
// }
// });
}
单独写一个
Activity
,可以把theme
设置为Dialog
,也可以使用默认的theme
,然后弹出一个Dialog
。另外需要注意的是,新版本的系统是不允许后台启动
Activity
,所以在操作时,需要特别注意下。