使用Android 4.2.2
我正在尝试编写AccessibilityService,并具有大多数必需的功能。我正在使用叠加层并允许用户通过蓝牙开关选择/ cligk突出显示的项目(目的是禁用客户端只想使用一个开关与Android设备进行交互)。
在解析屏幕时,我可以获取root accessibiltyNodeInfo对象及其所有子对象。我可以在屏幕上突出显示所有这些元素,然后通过.performAction()方法单击所需的元素。
在主屏幕上,有3个“窗格”可用,中间显示。向左或向右滑动以查看其他(标准启动器行为)。有一个节点报告isScrollable = true,但Action Flags不报告ACTION_SCROLL_FORWARD或ACTION_SCROLL_BACKWARDS。如果我不能在其上调用.performAction(),因为它不支持滚动,如何滚动这样的节点?为什么报告isScrollable = true,如果它不能以某种方式滚动?
感谢任何帮助 - 谢谢。
答案 0 :(得分:1)
您无法滚动无法执行ACTION_SCROLL_FORWARD或ACTION_SCROLL_BACKWARDS的节点。
Android上的辅助功能框架充其量是实验性的,并且存在诸如您提到的不一致之类的不一致之处。通常,最好不要依赖任何is[Property]()
方法。相反,在节点上调用getActions()
或getActionsList()
之后,您应该自己测试您感兴趣的属性。