ITPub博客

首页 > 移动开发 > ANDROID > vivo系统无权限打开悬浮框的问题

vivo系统无权限打开悬浮框的问题

原创 ANDROID 作者:山有木xi 时间:2020-12-20 16:23:45 0 删除 编辑

大家都知道,添加悬浮窗的原理就是获取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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Android常驻通知栏
请登录后发表评论 登录
全部评论
Oracle OCA(Java),IBM高级工程师认证,中国软件行业人才(高级c语言),高级Android工程师,对数据库并发与性能调优也有一定了解

注册时间:2019-04-25

  • 博文量
    147
  • 访问量
    390781