2012-05-17 2 views

ответ

8

WebView доступность Android включается с помощью яваскрипта инъекции в Honeycomb и выше (как pointed out by alanv). пользователь должен включить его:

  • Включение режима доступности, в том числе «Аудиоподсказки» в 4.0+.
  • Включение «Расширенная доступность в Интернете» или на старых устройствах «Ввод веб-скриптов».

Это работает путем ввода javascript на каждый загруженный страницы через теги <script>. Обратите внимание, что вам нужно быть осторожным, так как не все содержимое будет хорошо работать с этим javascript, и инъекция не будет работать в некоторых случаях.

2

Нет, WebView не доступна из встроенной TalkBack службы, по крайней мере, по состоянию на 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. Обратите внимание, что это, похоже, работает только в версиях Android версии 4.0. Я обнаружил, что устройства 4.0 содержат say WebView или вообще ничего.

+1

WebView - это клавиатура, доступная в сотах и ​​выше, включив «Настройки»> «Доступность»> «Вставить веб-скрипты». В Jelly Bean и выше WebView имеет доступ к клавиатуре (и доступен для сенсорного просмотра, когда включен JS), включив «Настройки»> «Доступность»> «Улучшить доступность веб-страниц». – alanv

3

Я также столкнулся с этой проблемой на 4.0 устройствах. Я закончил размещение TextView поверх WebView, делая текст и текст TextView прозрачным. Текстовое содержимое TextView устанавливается на содержимое WebView со всеми HTML-тегами.

Наиболее безвкусное решение, я знаю, но эй это работает ....

1

Я знаю, как получить доступ к содержимому веб-контента по API доступности, когда 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() может получить содержимое веб-просмотра.

Извините за мой плохой английский.

Смежные вопросы