Android 应用程序与辅助功能服务的交互

Android 应用程序与辅助功能服务的交互,android,Android,我想知道是否有可能通过可访问性操作自动化一些操作。根据Android文档,应用程序可以使用AccessibilityNodeInfo调用performAction,但需要注意的是:只有当请求来自AccessibilityService时,才能执行操作。这是否意味着此操作只能在调用onAccessibilityEvent()的上下文中执行?如果我从活动绑定到服务以执行一个操作,它是否工作?如果没有,我看到的唯一解决方案是将命令推送到服务,并在第一次调用onAccessibilityEvent()时

我想知道是否有可能通过可访问性操作自动化一些操作。根据Android文档,应用程序可以使用
AccessibilityNodeInfo
调用
performAction
,但需要注意的是:只有当请求来自AccessibilityService时,才能执行操作。这是否意味着此操作只能在调用onAccessibilityEvent()的上下文中执行?如果我从活动绑定到服务以执行一个操作,它是否工作?如果没有,我看到的唯一解决方案是将命令推送到服务,并在第一次调用onAccessibilityEvent()时执行它,我是否遗漏了什么

可访问性服务可以配置为接收特定类型 对于可访问性事件,只侦听特定的包,获取事件 在给定的时间范围内,仅从每种类型中检索一次窗口 内容、指定设置活动等

基本上,
onAccessibilityEvent()
是AccessibilityEvents的回调

因此,假设此服务只是一个具有特定权限的侦听器,可以执行特定操作,例如
AccessibilityEvent.getSource()
,它将返回
AccessibilityNodeInfo

我可以基于此侦听器执行操作(调用)吗?


回答:当然可以。

这个问题不值得赏金,所以我只能在onAccessibilityEvent()上下文中工作,对吗?我可以在不同的屏幕上执行几个动作吗?我的意思是:按下按钮打开一个活动,在第二个活动上粘贴文本,等等。或者我需要听第二个活动吗?@greywolf82没有听清楚那个部分,是的,你可以按一个按钮打开一个活动,但是没有听清楚第二个活动部分,请更清楚一点,这样我可以帮助你:)我需要按顺序做几个动作。我不知道我是否可以在回调中创建一个唯一的操作序列,或者我需要等待每个事件,例如:我需要在activity1上按一个按钮,然后在activity2上粘贴一些文本。要执行粘贴操作,是否需要等待第二个活动位于前台?我想当activity2在前台时,我会收到一个新的回调。在这种情况下,我需要一个“状态机”,第一次调用->操作1,第二次调用->操作2等等。如果操作彼此不依赖,您可以进行异步调用,每次调用都必须创建一个队列。@ProllyGeek:您好,我使用的是AccessibilityService,读到另一个应用程序时说“Flipkart”。但我有一个问题,我在细节页面得到了viewpager,它连续返回两到三个视图,但我一次只需要可见视图。但我无法得到唯一可见的视图。我正在使用android:accessibilityEventTypes=“typeViewClicked | typeWindowContentChanged”如何获得详细信息页面的唯一视图。请帮忙