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,就不再报错了.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值