Service里面弹出Dialog出错

来源:互联网 发布:域名 ip 隐藏 编辑:程序博客网 时间:2024/05/18 21:09

一、问题:服务中弹出dialog报错

 Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@4931c1d -- permission denied for this window type



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

可以让对话框始终显示在其他应用程序的window之上,也就是说这个dialog始终处于最上层,对用户始终可见,

也就是说用户按了home之后dialog还在。这样做需要加上权限"android.permission.SYSTEM_ALERT_WINDOW",但是某些手机对底层进行了修改(小米,魅族,乐视之类),系统会默认会拒绝该权限。

二、解决办法:

通过将type设定为TYPE_TOAST, 就可以绕过检查