一分钟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控制的,如下图:

《一分钟get一个android技能》

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

    原文作者:GotoWhere
    原文地址: https://www.jianshu.com/p/e519f4e8737b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞