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();
}