Probé muestras, demostraciones de códigos de Google y otros recursos con WebView
, pero cuando trato de hacerlo en mi propio código, no me funciona.
Quiero cargar lo myfile.html
que puse en la carpeta de activos y usar:
private WebView myWebView;
myWebView.loadUrl("file:///android_assets/myfile.html");
En el emulador muestra error
La página web en
file:///android_assets/myfile.html
no se pudo cargar como: No se encontró el archivo solicitado./android_assets/myfile.html
Cuando coloco ese archivo en la res/raw/
carpeta y uso:
myWebView.loadUrl("file:///android_res/raw/myfile.html");
entonces solo el emulador Android 2.2 API nivel 8 puede cargar el archivo probablemente, otras versiones anteriores muestran el mismo error. ¿Me estoy perdiendo de algo?
¿Hay alguna forma de cargar un archivo .html existente en el paquete de la aplicación que funcione en todas las versiones de API?
raw
no funcionó. Tendría uso pararaw-de
,raw-fr
y así sucesivamente. Ahora tengo que hacerlo yo mismo.pegue su archivo .html en la carpeta de activos de la carpeta de su proyecto. y cree un archivo xml en la carpeta de diseño con el código fol: my.xml:
<WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" />
agregar código fol en actividad
setContentView(R.layout.my); WebView mWebView = null; mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("file:///android_asset/new.html"); //new.html is html file name.
fuente
Si su estructura debería ser así:
/assets/html/index.html
/assets/scripts/index.js
/assets/css/index.css
Entonces solo hazlo ( Android WebView: manejo de cambios de orientación )
if(WebViewStateHolder.INSTANCE.getBundle() == null) { //this works only on single instance of webview, use a map with TAG if you need more webView.loadUrl("file:///android_asset/html/index.html"); } else { webView.restoreState(WebViewStateHolder.INSTANCE.getBundle()); }
Asegúrate de agregar
WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { webSettings.setAllowFileAccessFromFileURLs(true); webSettings.setAllowUniversalAccessFromFileURLs(true); }
Entonces solo usa urls
<html> <head> <meta charset="utf-8"> <title>Zzzz</title> <script src="../scripts/index.js"></script> <link rel="stylesheet" type="text/css" href="../css/index.css">
fuente
Copie y pegue su archivo .html en la carpeta de activos de su proyecto y agregue el código siguiente en su actividad en onCreate ().
WebView view = new WebView(this); view.getSettings().setJavaScriptEnabled(true); view.loadUrl("file:///android_asset/**YOUR FILE NAME**.html"); view.setBackgroundColor(Color.TRANSPARENT); setContentView(view);
fuente
Se podía leer el archivo HTML de forma manual y luego usar
loadData
oloadDataWithBaseUrl
métodos de WebView mostrarlo.fuente
La compilación de depuración es diferente a la de lanzamiento , por lo que:
Considere la estructura de su archivo de proyecto así [ este caso es para un ensamblaje de depuración ]:
src | debug | assets | index.html
Debe llamar a index.html en su WebView como:
web.loadUrl("file:///android_asset/index.html");
Así sucesivamente, para el montaje Release, debería ser como:
src | release | assets | index.html
src | main | assets | index.html
fuente