是否为Android WebView启用了辅助功能?任何人都可以告诉如何使WebView可访问?
答案 0 :(得分:9)
通过在Honeycomb及以上版本中的javascript注入启用Android webview可访问性(如pointed out by alanv)。 用户必须通过以下方式启用它:
这可以通过<script>
标记将javascript注入每个加载的页面来实现。请注意,您必须要小心,因为并非所有内容都能与此javascript一起使用,并且在某些边缘情况下注入将失败。
答案 1 :(得分:6)
您可以扩展WebView类以实现Accessibility API方法。
http://developer.android.com/guide/topics/ui/accessibility/apps.html#custom-views
答案 2 :(得分:4)
我也在4.0设备上遇到过这个问题。我最终在WebView上放置了一个TextView,使TextView背景和文本透明。将TextView的文本内容设置为WebView的内容,并删除所有HTML标记。
我知道,这是一个最不优雅的解决方案,但嘿,它的确有效......
答案 3 :(得分:2)
不,内置的TalkBack服务无法访问WebView
,至少从Android 4.0版开始。相反,盲人用户instructed to use类似Mobile Accessibility for Android,提供语音浏览界面。我建议将您的内容提供给其他进程,允许盲人用户在他们选择的浏览器中查看内容。我通过开始查看内容的意图来做到这一点:
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设备保留say WebView或根本不保留任何内容。
答案 4 :(得分: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()可以获取Web视图内容。
抱歉,我的英语很差。