Definir peculiaridad para WebView

Tengo una aplicación que contiene un WebView. Cuando <!DOCTYPE html> no está definido en una página HTML, produce errores inesperados, ya que los fragmentos que ejecuto sólo son compatibles con HTML5 .

Así que en lugar de escribir <!DOCTYPE html> cada vez, puedo simplemente establecer quirk predeterminado (quirk es una declaración HTML predeterminada que se utilizará si no se especifica la versión HTML de una página).

Por lo tanto, si la declaración HTML de la página no se especifica, se renderizará automáticamente en HTML5.

¿Alguna idea sobre cómo hacer esto? Los principales navegadores utilizan esta técnica (incluido Chrome para Android) .

EDITAR

Tengo 500+ snippets como este usando directamente incrustado SVG etc

 <svg width="300" height="200"> <polygon points="100,10 40,198 190,78 10,78 160,198" style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" /> </svg> 

Estos fragmentos no se ejecutan bien en otras versiones de HTML. En realidad, no tengo ningún problema en escribir <!DOCTYPE html> en cada página, pero estoy preocupado por mis clientes que pueden ver, editar y modificar mis fragmentos o incluso crear un nuevo fragmento .

Le di mi aplicación a mis amigos para la prueba y muchos de ellos se quejaron de los fragmentos que crearon no funcionan correctamente y creo que el mismo tipo de cosa puede suceder con mis clientes también.

Por favor ayuda

EDIT: Chrome para Android no utiliza WebView [ Origen ]:

¿Esto significa que Chrome para Android utiliza WebView?

No, Chrome para Android es independiente de WebView. Ambos están basados ​​en el mismo código, incluyendo un motor de JavaScript y motor de renderizado común.

Por lo que han añadido esta funcionalidad encima del comportamiento normal de WebView. Lo que quieres lograr no es posible.


Creo que la única manera esto sería posible (basado en mis búsquedas) es anular el comportamiento de WebView y hacer algo como esto en su lugar:

  1. Captura la URL deseada
  2. Utilice HttpClient para obtener el contenido de la página
  3. Compruebe la etiqueta <! DOCTYPE> y agregue si no existe
  4. Utilice WebView.loadDataWithBaseURL para representar el HTML en el WebView y especifique la url de base capturada en el paso 1

Obviamente esto es muy hacky y no puedo confirmar si funciona en absoluto. Por lo tanto, la mejor solución es especificar una etiqueta <! DOCTYPE> en cada página . Si esto requiere validar fragmentos antes de cargar / permitir que los clientes los creen, entonces así sea.

  • Android: reducción de la calidad de los píxeles en las imágenes cargadas en WebView
  • Pantalla Splash mientras carga una url en una vista web en la aplicación Android
  • SaveState de Webview no maneja WebViewClient personalizado
  • Android WebView: sólo carga HTML, no carga JS o CSS (en algunos dispositivos)
  • La vista web de Android no reproduce video, jwembedder
  • ¿Es -webkit-column-break-before compatible con Android 2.3 WebView?
  • No más Text Reflow después de ampliar KitKat WebView
  • Android: cómo agregar un teclado virtual personalizado cuando se selecciona el campo de formulario en WebView
  • Cómo grabar la pantalla de actividad de la webview con Android MediaCodec?
  • Cómo realizar un clic de botón dentro de un Webview Android
  • ¿Justificar texto en una aplicación de Android utilizando un WebView pero presentando una interfaz similar a TextView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.