Android在广播接收者中弹出对话框

最近在做一个Android的日历+备忘录,在到设置的时间时需要显示弹框,关闭闹钟,就遇到了弹框无法显示的问题,一调用show()方法程序就崩溃了。

在网上找了很多,有说动态调用的,没用;有说添加权限的,我试了也没用,最后狠下心,找了一个闹钟的代码研究了一下,终于解决了,现在分享给大家。

其实解决方法差不多,也是添加权限,但略有不同

先在 AndroidManifest.xml 中添加

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

然后在调用show()方法前设置类型

int type;
if(Build.VERSION.SDK_INT>24){
    type= WindowManager.LayoutParams.TYPE_PHONE;
}else if(Build.VERSION.SDK_INT>18){
    type= WindowManager.LayoutParams.TYPE_TOAST;
}else{
    type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
}

alertDialog.getWindow().setType(type);

就是这里不一样了,很久这里写的都是  ,反正我试了是不好使的

alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

这样之后就好使了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值