安卓 无障碍 获取 悬浮窗 节点信息 AccessibilityInfo

想要对悬浮窗进行操作,却发现AccessibilityService.getRootInActiveWindow() 获取不到悬浮窗的节点信息。
上网查了下,才知道
AccessibilityService.getRootInActiveWindow()
获取的是当前交互界面窗口的根view,比如用户刚触摸过的界面、获得焦点输入界面(即使用户没有触摸过)、弹出窗等。

也就是说,下拉栏、弹出窗、悬浮窗还有应用界面等是在一个个独立window下的。

想要获得悬浮窗的节点信息,我们需要先获取其对应的窗口。可用AccessibilityService.getWindows(),得到List < AccessibilityWindosInfo>,再从中找出悬浮窗对应的window,用getRoot()得到其根view。

看了下官方文档,
需要在meta-data中配置
android:accessibilityFlags="flagRetrieveInteractiveWindows"和 android:canRetrieveWindowContent=“true”
getWindows命令才有效果。

要获取真实的布局还需要android:accessibilityFlags=“flagIncludeNotImportantViews”

看了https://blog.csdn.net/qq_28210079/article/details/80486592这篇博文才知道和官方文档才知道的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值