Подтвердить что ты не робот

Доступность и Android WebView

Доступна ли доступность для Android WebView? Может ли кто-нибудь сказать, как сделать WebView доступным?

4b9b3361

Ответ 1

Доступность веб-просмотров Android включена с помощью javascript-инъекции в Honeycomb и выше (как указанной alanv). Пользователь должен включить его:

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

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

Ответ 3

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

Самое неудобное решение, я знаю, но эй это работает....

Ответ 4

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

Ответ 5

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

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