EasyPusher "permission denied for window type 2006" 错误处理

EasyPusher之前在某个版本,应客户要求支持动态获取权限功能, 将targetSdkVersion改为了23,结果后来发现,会在一些设备上会崩溃.经后台采集日志后发现错误如下图:

这里写图片描述

原来有些手机在安卓6.0系统对TYPE_SYSTEM_OVERLAY这种格式的VIEW进行了限制,只有系统级应用才有权限来创建这种窗口.毕竟这样的窗口可以不受用户限制,比如app退出后,窗口还可以继续展示.

而EasyPusher为了做后台上传的功能,要求必须要有个窗口常驻以供摄像头使用(否则摄像头不会回调视频流),哪怕APP退到后台也得继续存在.因此必须用到上面说的TYPE_SYSTEM_OVERLAY级别的VIEW.

如果targetSdkVersion设置成23以及以上,那系统会以为开发者已经在23系统上适配过了,系统认为APP已经对这种悬浮窗做了兼容.所以就按照正常的6.0的权限政策对APP进行限制,这时候试图开启这样的窗口就会报错.

如果targetSdkVersion设置成22以及以下,那系统会以为开发者只在22或者以下的系统上做过适配,假设APP安装在6.0的机器,那系统也会以兼容的模式来对APP做权限限制,这时候,悬浮框的创建权限就放过了.所以APP不会有问题.

因此,将targetSdkVersion又改回到22,就不再报错了.

猜你喜欢

转载自blog.csdn.net/jyt0551/article/details/77914526
今日推荐