Cargar archivo HTML en WebView


189

Tengo una página html local junto con varios otros recursos señalados por ella (archivos css y bibliotecas Javascript) que me gustaría cargar en un WebView. ¿Cómo podría lograrse esto?

Quizás no sea la mejor manera de proceder, pero todavía estoy experimentando.


para mí funcionó si soltaba el punto html -webView.loadUrl ("file: /// android_asset / filename");
2015

44
¿Alguna razón por la que no quieres aceptar la respuesta de @ Joe?
Clase A

3
webview.loadUrl ("archivo: ///android_asset/sample.html"); - haga clic aquí
c49

Respuestas:


350

La forma más fácil probablemente sería poner sus recursos web en la carpeta de activos y luego llamar a:

webView.loadUrl("file:///android_asset/filename.html");

Para una comunicación completa entre Java y Webview, vea esto

Actualización: la carpeta de activos suele ser la siguiente carpeta: <project>/src/main/assets Esto se puede cambiar en la configuración de la carpeta de activos en su <app>.imlarchivo como:

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” /> Consulte el artículo Dónde colocar la carpeta de activos en Android Studio


66
Este problema es realmente una pregunta frecuente.
shihpeng

2
Presumiblemente, también podría cargarlo de una cadena si es muy adverso al uso de activos ... (consulte stackoverflow.com/questions/4543349/load-local-html-in-webview )
Joe

24
Esto debe marcarse como respuesta correcta, porque realmente lo es.
gorodechnyj

66
@ SK9 Lo mismo se aplica si falta cualquier otro activo o archivo esperado, como si cambia el nombre de su clase de actividad inicial y no se actualiza AndroidManifest.xmlpara reflejar eso. (Personalmente, recomendaría poner la ruta URL / archivo en los recursos de cadena y acceder a ella desde allí, de modo que la ruta esté con todos los demás datos de cadena para el programa, pero eso no está realmente directamente relacionado con el tema del activo / dependencia de recursos.)
JAB

77
Para aquellos que no saben cómo crear una carpeta de activos, haga clic derecho en "aplicación" -> "Nuevo" -> "Carpeta" -> "Carpeta de activos", y haga clic en "Finalizar". Android Studio creará la carpeta de activos en la ruta correcta. Y solo necesita mover su archivo html a la nueva carpeta de activos. Referencia: stackoverflow.com/questions/18302603/…
Yuchao Zhou

28

Probablemente esta muestra podría ayudar:

  WebView lWebView = (WebView)findViewById(R.id.webView);
  File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
  lWebView.loadUrl("file:///" + lFile.getAbsolutePath());

3
en el ejemplo que tiene el html en la memoria externa, es mejor tenerlo empaquetado dentro de la aplicación
Jonathan García

1
"file: ///" es importante cuando se usa un archivo HTML del directorio de dispositivos local. Gracias
ralphgabb

5

En este caso, ¡usar WebView#loadDataWithBaseUrl()es mejor que WebView#loadUrl()!

webView.loadDataWithBaseURL(url, 
        data,
        "text/html",
        "utf-8",
        null);

url: url / path Cadena que apunta al directorio y todos sus archivos JavaScript y enlaces html tienen su origen. Si es nulo, se trata de: en blanco. data: Cadena que contiene su archivo hmtl, lea con BufferedReader por ejemplo

Más información: WebView.loadDataWithBaseURL (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)


3
¿Qué es la variable de datos ? Por favor proporcione un ejemplo.
IgorGanapolsky

0

La respuesta aceptada no funciona para mí, esto es lo que funciona para mí

WebSettings webSetting = webView.getSettings();
    webSetting.setBuiltInZoomControls(true);
    webView1.setWebViewClient(new WebViewClient());

   webView.loadUrl("file:///android_asset/index.html");

¿Cuál es la versión de tu móvil?
Jimale Abdi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.