我正在尝试从 Android 中 AccessibilityService 的 getRootInActiveWindow() 读取列表视图。
AccessibilityNodeInfo topMostNode = getTopMostParentNode(getRootInActiveWindow());
这就是我在窗口中获取 topMostNode 的方式, getTopMostParentNode() 函数递归地检查并返回最顶层的父节点。
问题是我按下了“显示更多”按钮,它会再加载 5 条记录,最初,它在列表视图中显示 5 个元素。但是当我在根活动窗口中获取所有 listView 节点时,(也许)我没有获取最新的屏幕信息。但正因为如此,我无法获取列表视图中的所有项目,仅获取前 5 个项目。
所以,我问是否可以做一些事情来帮助我获取列表视图中的所有项目,或者有什么方法可以刷新窗口以加载可访问性服务。
我尝试过 topMostNode.refresh() 但没有帮助。
这就是我获取所有列表视图项目的方式:
List<AccessibilityNodeInfo> listViewNodes = new ArrayList<>();
findNodesByClassName(getRootInActiveWindow(), "android.widget.ListView", listViewNodes);
ListView 包含多个列表视图,我正在尝试读取
显然,有一种方法可以刷新节点,使用
refresh()
类上的 AccessibilityNodeInfo
函数。就这样,我像topMostNode.refresh()
一样刷新了我的topMostNode,然后它就按预期工作了。