- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在为 Android 编写无障碍服务,旨在为 body 残障人士提供不同的替代方案来控制设备,例如,使用开关、扫描、头部跟踪等。
目前,为了在应用程序界面上执行实际操作,我们使用辅助功能 API,基本上是 AccessibilityNodeInfo.performAction() 方法。这在大多数情况下都可以正常工作,但我们发现了一些重要的限制:
一种解决方案是使用不同的 API 来执行操作,而 android.app.UiAutomation 似乎可以满足此目的。根据文档“它还允许注入(inject)任意原始输入事件,模拟用户与键盘和触摸设备的交互”,这正是我正在寻找的;尽管我知道 UiAutomation 旨在用于测试目的(并且可能还没有为生产质量代码做好准备)并且也许在不同设备上的行为可能不同。我也明白这样的 API 可能 be a security hole如果有任何应用程序可以使用它。但允许无障碍服务使用 UiAutomation 似乎是合理的,因为 AccessibilityNodeInfo.performAction() 提供了类似的“权力”。
因此,我在无障碍服务中尝试了以下操作:
Instrumentation i = new Instrumentation();
UiAutomation automation = i.getUiAutomation();
但是 getUiAutomation() 总是返回 null。
是否有任何选项可以在无障碍服务中使用 UiAutomation(或类似的 API)?
顺便说一句:root 设备不是我们的选择,所以我们不能 inject events through the screen driver
最佳答案
我回答我自己的问题。
自 Nougat (API 24) 以来,以编程方式在其他应用程序上执行操作的方法是使用无障碍服务和 AccessibilityService#dispatchGesture方法。
关于android - 通过无障碍服务使用 UiAutomation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30942775/
这是我们从文档中了解到的:public 属性的 getter 不能是私有(private)的(看起来合乎逻辑),所以: @Inject var repository: MyExampleReposit
是否可以在没有 block 的情况下使用 GCD?有没有办法像 mikeash 在他的 post 中所说的那样使用 _f 变体来使用 GCD? .我四处寻找,双方都没有证据。是可能还是不可能。 如果可
我一直在努力思考 的用法,以及我应该朝着哪个方向前进最容易接近。 应该总结列:在完美的情况下,每列在 中都有一个相应的摘要单元格. 不幸的是,这种情况几乎从来没有发生过。 通常只有几列包含数字数据
我是一名优秀的程序员,十分优秀!