问题标签 [accessibilityservice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何像 TalkBack 应用程序一样从选定区域检索文本
我正在开发一个像 TalkBack 这样的应用程序,它可以帮助盲人上网。现在我想像 TalkBack 一样从选定区域检索文本
这是我的辅助功能服务 xml 配置,但我无法在浏览器中选择任何文本,accessibilityEvent.getText()总是返回空字符串。
android - 如何使用 AccessibilityService 在浏览器中的 EditText 中设置文本
我创建了一个AccessibilityService
可以正常工作并onAccessibilityEvent()
在每个事件上调用的。我想要做的是EditText
从我的服务中在浏览器中填充一个。我可以使用AccessibilityNodeInfo.ACTION_PASTE
. 但是,这不适用于EditText
s 在 Chrome 等浏览器中,即使它们似乎被检测到相同。
这是我设置服务的方式:
以及我如何处理事件:
我在清单中的 xml 文件中定义了更多选项,使用:
除了EditText
在 Chrome 中,这一切似乎都有效.. 什么都没有出现,还有其他选择吗?LastPass 似乎以某种方式做到了:-)
android - 从无障碍服务中检测文本源
我正在使用辅助功能服务从特定应用程序的视图中接收文本。文本可以手动插入或通过语音插入。有什么方法可以检查来源吗?如果文本是手动插入的,我想改变我的行为。
android - 如何使用android中的辅助功能从我的应用程序中识别应用程序的登录页面
- 你好。使用辅助功能,我正在尝试从我的应用程序中自动填充任何应用程序的用户名和密码,该应用程序正在管理所有应用程序(如 dashlane)的用户名和密码。我找到了一种使用Action_Paste自动填充字段值的方法。当用户开始关注 EditText 时,它将使用 getSource() 方法获取 AccessibilityNodeInfo,使用它自动填充 EditText Filed,下面是上述过程的代码。
代码:
在这里我需要扩展我的ui,它需要识别登录页面,一旦确认为登录页面,它将显示登录项列表。根据用户选择,它将自动填写用户名字段和密码字段。
在这里我有两个问题
如何识别应用程序的登录页面,我尝试过类似,当用户单击第一个 Edittext 文件时,我将搜索下一个节点并检查它是否是密码文件?我使用 getchild() 方法。但不给子元素。在应用程序中加载登录页面时,我需要确定它是否是登录字段?我如何识别登录页面,欢迎任何教程。
根据我填写字段值的来源。如果我确定了一个登录页面,那么如何获取用户名和密码的 AccessibilityNodeInfo。这样我就可以填写这两个领域的仪式?
我花时间解决这些问题。但我什么也得不到。请任何人都可以对上述问题进行深入的解释和教程。谢谢。
android - 如何在 Android 中使用辅助功能获取 Activity 的子节点的来源
我正在尝试使用 android 中的可访问性获取活动中所有节点的来源。首先,当用户关注 EditText 时,它将获得 Focused EditText 的父级。使用父我将获得一个活动的所有子元素。我可以通过调用 event.getSource() 来获取 Focused EditText 的源,但是我无法获取所有子元素的源我尝试了一些东西但我无法获取子节点的源,为什么我需要源因为使用它,我只能在节点中粘贴一些文本。
代码。
所以在这里我怎样才能获得子节点的来源。我通过获取焦点节点的源将文本粘贴到焦点 EditText。如果无法获取子节点的来源,那么我如何将某些文本粘贴到该子节点?有这个可能吗,请给点意见...
android - 从无障碍服务中使用 UiAutomation
我正在为 Android 编写一个无障碍服务,旨在为身体残疾的人提供不同的选择来控制设备,例如,使用开关、扫描、头部跟踪等。
目前,为了在应用程序的界面上执行实际操作,我们使用可访问性 API,基本上是 AccessibilityNodeInfo.performAction() 方法。这在大多数情况下都可以正常工作,但我们发现了一些重要的限制:
- 大多数键盘 (IME) 都不起作用。我们只在 Lollipop (API 22) 上使用 Google 键盘取得了成功,并且不得不使用AccessibilityService.getWindows()。对于较低的 API 版本,我们必须开发一个特殊的键盘(无疑不是最佳解决方案)。
- 大多数游戏无法访问。点。它们不导出 AccessibilityNodeInfo 树。
- Web 导航不实用(除其他问题外,没有滚动)。
一个解决方案是使用不同的 API 来执行操作,而且 android.app.UiAutomation 似乎适合这个目的。根据我正在寻找的文档“它还允许注入模拟用户与键盘和触摸设备交互的任意原始输入事件”;尽管我知道 UiAutomation 旨在用于测试目的(并且可能还没有准备好用于生产质量代码),并且可能在不同设备上的行为可能不同。我也明白,如果任何应用程序都可以使用这样的 API,它可能是一个安全漏洞。但是,鉴于 AccessibilityNodeInfo.performAction() 提供了类似的“权力”,允许无障碍服务使用 UiAutomation 似乎是合理的。
因此,我在辅助功能服务中尝试了以下操作:
但是 getUiAutomation() 总是返回 null。
是否有任何选项可以在辅助功能服务中使用 UiAutomation(或类似 API)?
顺便说一句:生根设备不是我们的选择,因此我们无法通过屏幕驱动程序注入事件
android - 无法在辅助功能 Android 中使用 TYPE_WINDOWS_CHANGED 事件
我搜索当 android 应用程序窗口发生变化时调用的可访问性事件。我在堆栈溢出中发现了一个与我正在搜索的内容相关的问题。
链接是:TYPE_WINDOWS_CHANGED 无障碍服务
通过研究这些评论,我得到它只能在 api 级别 21 或更高版本中完成。但我也需要在较低版本中使用它,比如 api 级别 14。我怎样才能在 api 级别 14 中使用 TYPE_WINDOWS_CHANGED。如果 TYPE_WINDOWS_CHANGED 不能在 api 级别 14 中使用,那么当新活动或窗口打开时我可以使用什么事件。谢谢。
android - 在android中将字符串转换为AccessibilityNodeInfo
我正在使用 android 中的可访问性。我怀疑我是否尝试过搜索谷歌和堆栈溢出。但我无法得到它。
问题是,当我关注编辑文本字段时,我可以通过 using 获取编辑文本字段的源,并通过 usingevent.getSource()
将检索到的源存储到本地SharedPreference
。然后,我将AccesssibilityNodeInfo
from的源存储SharedPreference
为字符串。
因此,我将 a 的来源AccesssibilityNodeInfo
作为字符串,需要将其转换为AccesssibilityNodeInfo
.
怎么可能?我已经尝试了一些正常的转换,但这是不可能的。谢谢。
android - 在 Android 中使用 Accessibility Service 获取应用程序的名称
我在无障碍服务工作。我需要使用辅助功能服务获取应用程序名称。我在 Android 网站的开发人员中研究了无障碍服务的文档。但没有提及使用辅助功能获取应用程序名称。
这可以获取应用程序的名称吗?我认为这是可能的,因为回话获取应用程序的名称。因此,如果有任何方法可以获取应用程序的名称,请提出您的建议。
android - 将新闻事件发送回基础活动
实际上我的硬件后退按钮不起作用。所以我要构建的是一个浮动视图,点击它我可以将后按发送到当前活动(因为我的浮动视图没有聚焦,因此覆盖下的活动是聚焦的)。
所以我能够使用以下代码构建覆盖视图
而且我认为由于它不在重点调度后退键将转到基础活动,但这不起作用。
在搜索如何做到这一点时,我遇到了这个应用程序,它正在做同样的事情。我认为它为此使用 AccessibilityService 但我不知道如何。任何人都可以指导我如何实现这一点(将新闻发送到底层活动)。谢谢!