23

是否为 Android WebView 启用了辅助功能?谁能告诉如何使 WebView 可访问?

4

5 回答 5

9

Android webview 可访问性是通过 Honeycomb 及更高版本中的 javascript 注入启用的(正如alanv 所指出的那样)。用户必须通过以下方式启用它:

  • 打开辅助功能模式,包括 4.0+ 中的“通过触摸探索”。
  • 启用“增强的 Web 可访问性”,或者在旧设备上启用“注入 Web 脚本”。

这是通过通过<script>标签将 javascript 注入每个加载的页面来实现的。请注意,您必须小心,因为并非所有内容都能很好地使用此 javascript,并且在某些边缘情况下注入会失败。

于 2013-07-11T17:47:12.537 回答
6

您可以扩展 WebView 类以实现 Accessibility API 方法。

http://developer.android.com/guide/topics/ui/accessibility/apps.html#custom-views

于 2012-06-29T17:53:15.343 回答
4

我也在 4.0 设备上遇到了这个问题。我最终在 WebView 上放置了一个 TextView,使 TextView 背景和文本透明。TextView 的文本内容被设置为 WebView 的内容,所有 HTML 标记都被删除。

我知道,这是一个最不优雅的解决方案,但是嘿,它有效....

于 2012-07-13T00:47:33.030 回答
2

不,WebView至少从 Android 4.0 版开始,无法从内置 TalkBack 服务访问。相反,盲人用户被指示使用类似Android 的 Mobile Accessibility 的东西,它提供了一个语音浏览界面。我建议将您的内容提供给其他进程,允许盲人用户在他们选择的浏览器中查看内容。我通过开始查看内容的意图来做到这一点:

public static void loadUrlInBrowser(Context c, Uri uri) {
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setDataAndType(uri, "text/html");
    c.startActivity(i);
}

或者,您可以设置 WebView 的内容描述。请注意,这似乎仅适用于 4.0 之前的 android 版本。我发现 4.0 设备要么说 WebView,要么什么都不说。

于 2012-07-10T19:21:10.027 回答
1

我知道如何通过 Accessibility API 访问 Web 视图内容,当 AccessibilityNodeInfo.getText() 为 null 或“null”时,调用 AccessibilityNodeInfo.getContentDescription()。

简单的代码:

private String getTextOrDescription(AccessibilityNodeInfo info) {
    String text = String.valueOf(info.getText());

    if (isEmptyOrNullString(text)) {
        text = String.valueOf(info.getContentDescription());
    }
    return text;
}

private boolean isEmptyOrNullString(String text) {
    if (TextUtils.isEmpty(text) || text.equalsIgnoreCase("null")) {
        return true;
    }
    return false;
}

getContentDescription() 可以获取网页视图内容。

对不起我糟糕的英语。

于 2016-11-30T03:58:36.030 回答