无障碍服务和网络视图?

Accessibility Service and webview?

可以单击(使用 AccessibilityService)放置在 Webview 中的特定按钮吗?例如,一些应用程序 A 在 MainActivity 中有一个 webview。在 activity 开始后,网页内容加载到 webview 中。加载的网页包含带有文本 "Chat" 的按钮。我可以通过无障碍服务点击这个按钮吗?我知道我可以点击 Android 本机小部件(android.widget.Button、TextView 等),但我不知道如何点击显示在网页视图内的网页上的按钮。请帮助

我想你可以做这样的事情吗?

Button button = (Button)findViewById(R.id.ButtonId);
button.onClick(.....); 

这是一个复杂的答案。是的,您可以点击视图,但是,这取决于网络开发人员如何实现按钮。如果他们做了一些愚蠢的事情,比如实现触碰触碰监听器,而不是 onClick 监听器,它很可能会被破坏。建议:使用 TalkBack。如果它不适用于 TalkBack,则您无法执行此操作。如果是这样,以下代码应该适合您:

AccessibilityNodeInfo info = ...;

info.performAction(AccessibilityNodeInfo.ACTION_CLICK);

旁注:有传言说 Android 实现了从无障碍服务到伪造真实硬件事件的能力。到目前为止,我只看到它在 Android 的演示中使用,并且仅用于系统应用程序(具有提升的权限)。请留意完善此功能所需的 API,它们实际上可能隐藏在某个地方,但我还没有看到它们公开。