android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
2015-04-01 19:50
501 查看
在service中通过WindowManager创键自定义view的时候出现如下错误:android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application百度了一下也没有找到有效的解决办法,后来发现是自己的代码出现了问题,在设置WindowManager.LayoutParams时必须指定layoutParams.type,然后再addView。
layoutParams = new WindowManager.LayoutParams();
layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;// 该类型提供与用户交互,置于所有应用程序上方,但是在状态栏后面
//layoutParams.type = -2; //这个是android系统的漏洞,不需要申请创建android.permission.SYSTEM_ALERT_WINDOW(悬浮窗)的权限
layoutParams.gravity = Gravity.LEFT | Gravity.TOP; // 调整悬浮窗口至左上角<span style="white-space:pre"> </span>layoutParams.width = 150;<span style="white-space:pre"> </span>layoutParams.height = 150;<span style="white-space:pre"> </span>layoutParams.format = PixelFormat.RGBA_8888;<span style="white-space:pre"> </span>final MyFloatView view = new MyFloatView(this);<span style="white-space:pre"> </span>windowManager.addView(view, layoutParams);<span style="white-space:pre"> </span><span style="white-space:pre"> </span>view.setOnTouchListener(new OnTouchListener() {<span style="white-space:pre"> </span><span style="white-space:pre"> </span>@Override<span style="white-space:pre"> </span>public boolean onTouch(View v, MotionEvent event) {<span style="white-space:pre"> </span><span style="white-space:pre"> </span>rawx = (int) event.getRawX();<span style="white-space:pre"> </span>rawy = (int) event.getRawY(); <span style="white-space:pre"> </span><span style="white-space:pre"> </span>int action = event.getAction();<span style="white-space:pre"> </span>switch(action){<span style="white-space:pre"> </span>case MotionEvent.ACTION_DOWN:<span style="white-space:pre"> </span>x = (int) event.getX();<span style="white-space:pre"> </span>y = (int) event.getY();<span style="white-space:pre"> </span>break;<span style="white-space:pre"> </span>case MotionEvent.ACTION_MOVE:<span style="white-space:pre"> </span>layoutParams.x = -x + rawx;<span style="white-space:pre"> </span>layoutParams.y = -y + rawy;<span style="white-space:pre"> </span>windowManager.updateViewLayout(view, layoutParams);<span style="white-space:pre"> </span>break;<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>return false;<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>});
相关文章推荐
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli