最近在做一个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); |
这样之后就好使了