Android8.0在广播接收器中使用弹出窗

Android8.0在广播接收器中使用弹出窗

解决报错信息:WindowManager$BadTokenException: Unable to add windowandroid.view.ViewRootlmplsW@61b864 permission denied for window type 2010

WindowManager$BadTokenException: Unable to add windowandroid.view.ViewRootlmplsW@61b864 permission denied for window type 2010

一:

import static android.content.ContentValues.TAG;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;

public class ForceOfflineReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {
        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
        dialogBuilder.setTitle("Warning");
        Log.d(TAG,"test+++++++++++++");
        dialogBuilder.setMessage("You are forced to be offline. Please try to login again.");
                dialogBuilder.setCancelable(false);
        dialogBuilder.setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        
                    }
                });
        AlertDialog alertDialog = dialogBuilder.create();
		// 需要设置AlertDialog的类型,保证在广播接收器中可以正常弹出
		'安卓8.0之前 (WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)'
		'安卓8.0 (WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY)'
        alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
        alertDialog.show();
    }
}

AlertDialog.Builder:构建一个对话框
setCancelable():将对话框设为不可取消(防止点击 Back 键)
setPositiveButton():为对话框注册确定按钮

TYPE_SYSTEM_ALERT:对话框类型(在活动接收器中弹出)
TYPE_APPLICATION_OVERLAY:对话框类型(安卓8.0)

二:

在 AndroidManifest.xml 中声明 android.permission.SYSTEM_ALERT_WINDOW 权限。


<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一拖再拖 一拖再拖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值