想要对悬浮窗进行操作,却发现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这篇博文才知道和官方文档才知道的。