Accessibilité et Android WebView

Est l'Accessibilité activé pour Android WebView? Est-ce que quelqu'un peut dire comment rendre un WebView accessible?

21
demandé sur rds 2012-05-17 15:31:23

5 réponses

L'accessibilité à WebView Android est activée par injection javascript dans Honeycomb et au-dessus (comme souligné par alanv ). L'utilisateur doit l'activer par:

  • activer le mode accessibilité, y compris "Explorer par Toucher" dans 4.0+.
  • permettant "L'accessibilité améliorée du Web", ou, sur les appareils plus anciens, "injecter des Scripts Web".

cela fonctionne par injection javascript dans chaque page chargée via les balises <script> . Notez que vous devrez faire attention, car tout le contenu ne sera pas agréable avec ce javascript, et l'injection échouera dans certains cas extrêmes.

8
répondu krakatoa 2017-05-23 12:09:54

vous pouvez étendre la classe WebView pour implémenter les méthodes de L'API accessibilité.

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

6
répondu keaton_fu 2012-06-29 17:53:15

j'ai également rencontré ce problème sur les appareils 4.0. J'ai fini par placer un TextView au-dessus du WebView, rendant le fond TextView et le texte transparent. Le contenu texte de TextView étant défini au contenu de WebView avec toutes les balises HTML supprimées.

une solution peu élégante, je sais, mais ça marche....

4
répondu electricSunny 2012-07-13 00:47:33

non, le WebView n'est pas accessible à partir du service intégré TalkBack, au moins à partir de la version Android 4.0. Au lieu de cela, les utilisateurs aveugles sont instruits d'utiliser quelque chose comme accessibilité Mobile pour Android , qui fournit une interface de navigation parlée. Je suggère de rendre votre contenu disponible à d'autres processus, permettant aux utilisateurs aveugles de voir le contenu dans leur navigateur de choix. Je l'ai fait en commençant une intention de voir le contenu:

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

alternativement, vous pouvez définir la description du contenu du WebView. Notez que cela ne semble fonctionner que dans les versions pré 4.0 d'android. J'ai trouvé que 4.0 appareils conservent soit dire WebView ou rien du tout.

2
répondu krakatoa 2017-05-23 10:31:09

je sais comment accéder au contenu web view par L'API Accessibility, quand AccessibilityNodeInfo.getText () est null ou "null", call AccessibilityNodeInfo.getContentDescription ().

code simple:

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() peut obtenir le contenu web view.

désolé pour mon mauvais anglais.

1
répondu koko 2016-11-30 03:58:36