¿Visualizar archivos de activos de Android en un WebView?

He visto varias discusiones sobre el problema de dar servicio a páginas de WebView desde activos, ninguna de las cuales parecía definitiva.

Quiero poder utilizar una vista web para mostrar los archivos html (y css incluidos) almacenados en los recursos del proyecto.

He encontrado que wv.loadUrl (“file: ///android_asset/html_no_copy/demo_welcome.html”) muestra ese archivo bien, pero los enlaces en demo_welcome.html, ya sea local (sin url prefijando el nombre del archivo) o absoluto – el mismo form fed como loadUrl – no funciona. Obtienen un error de “página web no disponible” que se muestra en la vista.

WebView wv = (WebView)this.findViewById(R.id.splashWebView); wv.loadUrl("file:///android_asset/html_no_copy/https://stackoverflow.com/questions/5320288/displaying-android-asset-files-in-a-webview/test.html"); // Works 

o

 wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html"); // Works 

Pero ninguno de los siguientes enlaces en demo_welcome.html funciona:

 CLICK HERE

OR HERE

Sé que puedo evitar esto escribiendo a un proveedor de contenido, pero eso parece extremo.

Quiero que esto funcione desde SDK 1.6 (4) en adelante.

¿Alguien sabe si esto se puede hacer solo con HTML, o necesita codificar algún código para cargar los datos?

Bueno, encontré algo que parece funcionar (en 1.6 y 2.2), a pesar de una advertencia de que recurriría.

También descubrí que un enlace de hoja de estilo css dentro de la primera y la segunda página funciona sin la siguiente intercepción. Extraño y me pone un poco nervioso. ¿Pensamientos?

Aquí está el código:

 WebView wv = (WebView)this.findViewById(R.id.splashWebView); wv.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html"); 

Aquí está el contenido del archivo:

 demo_welcome.html: < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">    Demo Html    

Testing One Two Three

CLICK HERE

OR HERE

https://stackoverflow.com/questions/5320288/displaying-android-asset-files-in-a-webview/test.html: < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> Insert title here

TEST.HTML

en lugar de loadUrl, intente utilizar el método loadDataWithBaseURL:

 wv.loadDataWithBaseURL("fake://not/needed", html, mimeType, encoding, "");