一分钟get一个android技能

       今天测试android悬浮窗功能的时候遇到一点小问题,最后顺利解决,在此记录一下,如果其他同学也碰到类似问题,可以快速找到答案。

android实现悬浮窗是通过WindowManager.addView(View view, WindowManager.LayoutParams params)接口来实现的,然后params.type赋值为WindowManager.LayoutParams.TYPE_SYSTEM_ALERT。发现悬浮窗显示不出来,我用的测试机是android_7.1.1(原生系统)的。调试后发现addView抛了异常“android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@886d274 -- permission denied for window type 2003”。这么好的学习机会怎么能错过,如是打开源码一番探究,TYPE_SYSTEM_ALERT需要的权限是通过AppOpsManager.OP_SYSTEM_ALERT_WINDOW控制的,如下图:

这个权限可以通过系统设置->应用->配置应用->特殊访问权限->出现在其他应用上里设置,进去后找到自己的应用,打开权限即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容