今天在实现Android浮窗时,报了一个异常android.view.WindowManager$BadTokenException: Unable to add window
根据以往的经验,出现这问题一般是我们的Context不正确,但是getApplicationContext、getApplication和this(Service对象)都报错。
在网上搜了一个demo,对比了一下,发现WindowManager.LayoutParams对象的type未设置
代码如下:
wm = (WindowManager) getApplication().getSystemService(Application.WINDOW_SERVICE);
LayoutParams lp = new LayoutParams();
lp.width = 200;
lp.height = 60;
lp.type = LayoutParams.TYPE_PHONE;
View view = LayoutInflater.from(getApplication()).inflate(R.layout.window_float, null);
wm.addView(view, lp);
关于type属性的可参考http://blog.sina.com.cn/s/blog_8e9c63c70101km4h.html
本文介绍了一种在Android中遇到的浮窗显示异常问题及解决方案。通过调整WindowManager.LayoutParams对象的type属性设置,成功解决了BadTokenException异常。

569

被折叠的 条评论
为什么被折叠?



