2012-05-17 10 views

Antwort

8

Die Android webview Zugänglichkeit über Javascript-Injektion in Honeycomb aktiviert ist und oben (als pointed out by alanv). Der Benutzer muss es durch aktivieren:

  • Einschalten Accessibility-Modus ‚Tippen & Entdecken‘ in 4.0+ einschließlich.
  • Aktivieren der erweiterten Web-Zugänglichkeit oder auf älteren Geräten "Inject Web Scripts".

Dies funktioniert durch Injektion von Javascript in jede geladene Seiten über <script> Tags. Beachten Sie, dass Sie vorsichtig sein müssen, da nicht alle Inhalte mit diesem Javascript gut wiedergegeben werden und die Injektion in einigen Randfällen fehlschlägt.

2

Nein, die WebView nicht zugänglich aus dem integrierten Talkback-Service ist, zumindest ab Android Version 4.0. Stattdessen sind blinde Benutzer instructed to use so etwas wie Mobile Accessibility for Android, die eine Schnittstelle für gesprochene Browsing bietet. Ich würde vorschlagen, Ihre Inhalte für andere Prozesse verfügbar zu machen, sodass blinde Nutzer den Inhalt in ihrem Browser ihrer Wahl sehen können. Ich tat dies, indem ich eine Absicht begann, um den Inhalt zu sehen:

Alternativ können Sie die Inhaltsbeschreibung des WebView einstellen. Beachten Sie, dass dies nur in Android 4.0-Versionen funktioniert. Ich habe festgestellt, dass 4.0 Geräte entweder say WebView oder gar nichts behalten.

+1

WebView ist in Honeycomb und höher über die Tastatur erreichbar, indem Sie Einstellungen> Eingabehilfen> Webskripte einfügen aktivieren. In Jelly Bean und höher ist WebView über die Tastatur zugänglich (und die Touch-Funktion kann bei JS aktiviert werden), indem Sie Einstellungen> Zugänglichkeit> Webzugänglichkeit verbessern aktivieren. – alanv

3

Ich stieß auch auf dieses Problem auf 4.0 Geräten. Ich legte ein TextView auf dem WebView, wodurch der TextView Hintergrund und Text transparent gemacht. Der Textinhalt der TextView wird auf den Inhalt von WebView gesetzt, wobei alle HTML-Tags entfernt werden.

Eine höchst unelegant Lösung, ich weiß, aber hey, es funktioniert ....

1

Ich weiß, wie Zugriff auf Webansicht Inhalt von Accessibility API, wenn AccessibilityNodeInfo.getText() ist Null oder "null", AccessibilityNodeInfo.getContentDescription() aufrufen.

einfacher Code:

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() kann den Web-Ansicht Inhalt bekommen.

Entschuldigung für mein schlechtes Englisch.