首页 > 移动开发 > ANDROID > vivo系统无权限打开悬浮框的问题
大家都知道,添加悬浮窗的原理就是获取WindowManager,然后调用WindowManager的
addView(View view, ViewGroup.LayoutParams params)方法即可。
View就是需要显示的悬浮窗,ViewGroup.LayoutParams包含了是全屏、非全屏和是否需要拦截触摸事件的参数
而在前段时间的vivo几款手机中出现的一个问题是,没有给予权限却能在应用内打开悬浮窗,但是当应用位于后台时,悬浮窗消失,并且再打开边无法打开悬浮窗了,而且会导致异常
这是为什么呢?
根据log和相关资料发现在我使用FloatWindowParamManager.checkPermission(getApplicationContext())检测用户是否给予我们“
允许显示在其他应用的上层”这个权限,而在vivo手机中,当应用处于前台是,无论用户是否给予相关权限,我的判断总是返回true,也就是总是返回用户允许悬浮窗存在,而应用处于前台是,悬浮窗的所有功能却也是正常执行的,但是一旦处于后台,悬浮窗消失,重新尝试打开,无法正常打开
经过尝试发现:原来Vivo在应用前台可见时会默认给予应用这个权限,无论实际这个悬浮窗权限有没有被用户允许都可以。但是当应用处于后台时只有这个悬浮窗权限开关真的打开时才能添加显示悬浮窗!也就是说一样的代码,应用处于前台是,一直返回true,当应用处于后台时才是真正的权限出来的时候
所以,对于Vivo的操作重点空i在于确保App处于后台时确实获取到了悬浮窗权限
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69917874/viewspace-2743780/ ,如需转载,请注明出处,否则将追究法律责任。