2012-05-17 27 views

Respuesta

8

La vista web accesibilidad de Android se activa a través de JavaScript inyección en nido de abeja y por encima (como pointed out by alanv). El usuario debe habilitarlo:

  • activa el modo de accesibilidad, incluyendo 'Exploración táctil' en 4.0+.
  • Activando 'Accesibilidad web mejorada' o, en dispositivos más antiguos, 'Inyectar scripts web'.

Esto funciona mediante la inyección de javascript en cada página cargada a través de etiquetas <script>. Tenga en cuenta que deberá tener cuidado, ya que no todo el contenido funcionará bien con este javascript, y la inyección fallará en algunos casos extremos.

2

No, el WebView no es accesible desde el servicio integrado de TalkBack, al menos a partir de la versión Android 4.0. En cambio, los usuarios ciegos son instructed to use algo así como Mobile Accessibility for Android, que proporciona una interfaz de navegación hablada. Sugeriría que su contenido esté disponible para otros procesos, permitiendo a los usuarios ciegos ver el contenido en el navegador que prefieran. Hice esto al iniciar la intención de ver el contenido:

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

Como alternativa, se puede establecer la descripción del contenido de la vista Web. Tenga en cuenta que esto solo parece funcionar en versiones anteriores a 4.0 de Android. Descubrí que los dispositivos 4.0 mantienen say WebView o nada en absoluto.

+1

WebView es accesible desde el teclado en Honeycomb y superior habilitando Configuraciones> Accesibilidad> Inyectar scripts web. En Jelly Bean y superior, WebView es accesible por teclado (y táctil explorable cuando JS está habilitado) al habilitar Configuración> Accesibilidad> Mejorar accesibilidad web. – alanv

3

También encontré este problema en los dispositivos 4.0. Terminé colocando un TextView en la parte superior de WebView, haciendo que el fondo y el texto de TextView sean transparentes. El contenido de texto de TextView se establece en el contenido de WebView con todas las etiquetas HTML eliminadas.

Una solución más poco elegante, lo sé, pero bueno funciona ....

1

Sé cómo acceder al contenido de la vista web mediante la API de accesibilidad, cuando AccessibilityNodeInfo.getText() es nulo o "nulo", llame a AccessibilityNodeInfo.getContentDescription().

código 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() puede obtener el contenido de la página we.

lo siento por mi inglés pobre.