vista studio ejemplo aplicacion java android webview android-studio gradle

java - aplicacion - webview android studio ejemplo



Cargando archivo html a webview en Android desde la carpeta de activos usando Android Studio (3)

Estoy usando Android Studio / Gradle.

La carpeta app / src / main / android_asset tiene el archivo llamado chart.html ..

Estoy tratando de cargar este archivo a mi webview así:

WebView view = new WebView(this); view.getSettings().setJavaScriptEnabled(true); view.loadUrl("file:///android_asset/chart.html"); setContentView(view);

Pero siempre recibo el error: no se pudo cargar porque ERR_FILE_NOT_FOUND.

¿Que me estoy perdiendo aqui?


El nombre del directorio debe ser activos no android_assets

Hazlo así:

Como se muestra en las fotografías anteriores, haga clic con el botón derecho en su aplicación-> Nueva-> Carpeta-> Carpeta de activos

Ahora ponga su archivo .html aquí en la carpeta de activos .

Eso es. Hecho.

Lo que queda es igual en código lo que hiciste.

WebView view = new WebView(this); view.getSettings().setJavaScriptEnabled(true); view.loadUrl("file:///android_asset/hello.html"); setContentView(view);


Problema similar:

Uso muchos productFlavors con diferentes applicationId.

Si intento cargar un archivo html desde res / raw / file.html, obtengo una excepción ClassNotFoundException. No encontré la clase "product.flavor.package.R $ raw"

El archivo R.java tiene un nombre de paquete diferente.

Parece que no puedes cargar una URL desde un archivo como: webView.loadUrl ("file: ///android_res/raw/page.html"); porque el WebView intenta utilizar el archivo R.class con un nombre de paquete diferente.

Supongo que el ERR_FILE_NOT_FOUND de cargar un archivo html de activos tiene el mismo problema pero no ve la excepción. (webView.loadUrl ("file: ///android_assets/page.html");)

Con este pequeño trabajo alrededor resuelvo mi problema:

try { AssetManager assetManager = context.getAssets(); InputStream stream = assetManager.open("page.html"); BufferedReader r = new BufferedReader(new InputStreamReader(stream)); StringBuilder total = new StringBuilder(); String line; while ((line = r.readLine()) != null) { total.append(line).append("/n"); } webView.loadDataWithBaseURL(null, total.toString(), "text/html", "UTF-8", null); } catch (Exception xxx) { Log.e(TAG, "Load assets/page.html", xxx); }

Espero que esto ayude. Stephan


Responde desde pero con un recurso en bruto.
Ventaja de esta solución: ¡sigue trabajando la traducción!

WebView webView = findViewById(R.id.about_text); try { InputStream inputStream = getResources().openRawResource(R.raw.about); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder stringBuilder = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line).append("/n"); } webView.loadDataWithBaseURL(null, stringBuilder.toString(), "text/html", "UTF-8", null); } catch (IOException e) { e.printStackTrace(); }