安卓6.0关于悬浮窗导致"检测到屏幕叠加层"的开发端解决方案
来源:互联网 发布:帕尔斯 知乎 编辑:程序博客网 时间:2024/05/21 20:39
安卓6.0以后当弹出权限授权框时,考虑到安全问题,如果屏幕上存在悬浮窗,会出现”检测到屏幕叠加层”的提示,导致不能正常授予权限。
最简单的解决方案就是手动关闭悬浮窗了,不过这样的用户体验当然是很糟糕的,今天要介绍的方法是在弹出授权框时自动隐藏悬浮窗,授权框消失后再恢复悬浮窗。
解决思路:如果能检测授权框弹出界面,就可以顺利解决问题,当然系统没有给开发者预留弹出授权框的接口,需要自己去检测界面的变化,因为是全局检测,所以自然就想到了辅助功能AccessibilityService了,可以在检测到窗口状态变化时,判断窗体所属的包名不是授权框所属包名”com.android.packageinstaller”,如果是则隐藏悬浮窗,如果不是则恢复悬浮窗的显示。
public void onAccessibilityEvent(final AccessibilityEvent accessibilityEvent) { if(accessibilityEvent.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED){ String foregroundPackageName = accessibilityEvent.getPackageName().toString(); if("com.android.packageinstaller".equals(foregroundPackageName)){ //进入授权界面,隐藏悬浮窗}else{ //退出授权界面,恢复悬浮窗}}
当然也可以监听授权框所属activity的变化,授权框activity包名为com.android.packageinstaller.permission.ui.GrantPermissionsActivity,可以监听onCreate()和finish()隐藏和显示悬浮窗,可以通过Xposed框架hook这两个方法实现,Xposed具体实现方法比较简单大家可以自行实现。
1 0
- 安卓6.0关于悬浮窗导致"检测到屏幕叠加层"的开发端解决方案
- Android 6.0 关于检测到屏幕叠加层的问题
- 【安卓6.0权限】安卓6.0系统提示“检测到屏幕叠加层”
- Android 6.0 以上版本提示“检测到屏幕叠加层”的问题,规避方法
- 关于安卓开发过程中屏幕的各种使用
- 安卓屏幕适配的解决方案
- 安卓悬浮窗
- 安卓悬浮窗的写法
- 安卓悬浮窗小球的实现
- 关于Fragment叠加点击穿透的解决方案
- 安卓关于不同屏幕大小的解决方案-支持多屏
- 关于安卓屏幕划分的知识
- android开发中悬浮窗被禁用,无权限开启悬浮窗的解决方案
- 安卓桌面悬浮窗
- 安卓手机超强的悬浮窗工具
- 安卓6.0版本下悬浮窗实现
- 安卓开发关于百度地图定位返回经纬度4.9E324科学计数法的解决方案
- 安卓可以移动的悬浮框
- win64位安装Apache
- 鸡兔同笼
- 常用的距离度量总结
- 树莓派
- web项目启动不了的最常见的问题之一
- 安卓6.0关于悬浮窗导致"检测到屏幕叠加层"的开发端解决方案
- jquery实现页面多个不同倒计时
- android编译环境的搭建
- 解决'GLIBC_2.14' not found问题时遇到的坑
- 洛谷 P1067 多项式输出
- Android 关于窗口切换时手机黑下屏的问题
- gradle 笔记
- [git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF
- Java 枚举类的基本使用