Pregunta

Me hicieron muestras intento, demos de códigos de Google y otros recursos con WebView, pero cuando trato de hacerlo en mi propio código, no funciona para mí.

Quiero myfile.html carga que puse en activos carpeta, y el uso de:

private WebView myWebView;

myWebView.loadUrl("file:///android_assets/myfile.html");

En caso de error shows emulador

  

La página web en file:///android_assets/myfile.html no podía ser   carga como: No se encontró el archivo solicitado.   /android_assets/myfile.html

Cuando puse ese archivo a la carpeta res/raw/ y usar:

myWebView.loadUrl("file:///android_res/raw/myfile.html");

entonces sólo emulador de Android 2.2 API de nivel 8 puede cargar el archivo probablemente, otras versiones anteriores muestran el mismo error. Me estoy perdiendo algo?

¿Hay alguna manera de cargar un archivo .html existentes en el paquete de aplicación que funciona en todas las versiones de la API?

¿Fue útil?

Solución

bien, ese fue mi error muy estúpido. Puedo publicar la respuesta aquí por si alguien tiene el mismo problema.

La ruta correcta para los archivos almacenados en la carpeta de activos es file:///android_asset/* (sin "s" para los activos de la carpeta que siempre estaba pensando que debe tener una "s").

Y, mWebView.loadUrl("file:///android_asset/myfile.html"); funciona bajo todos los niveles de la API.

Todavía no entender por qué mWebView.loadUrl("file:///android_res/raw/myfile.html"); sólo funciona en el nivel API 8. Pero no importa ahora.

Otros consejos

pegue el archivo .html en activos carpeta de la carpeta del proyecto. y crear 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"
    />

código de complemento de la actividad fol

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.

Si su estructura debe ser como este:

/assets/html/index.html

/assets/scripts/index.js

/assets/css/index.css

A continuación, sólo hacer ( Android WebView: manejo de los 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úrese 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);
    }

A continuación, sólo tiene que utilizar las direcciones URL

<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">

copiar y pegar los archivos .html en el activo carpeta de su proyecto y añadir a continuación el código en tu 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);

Se puede leer el archivo HTML de forma manual y luego usar loadData o loadDataWithBaseUrl métodos de WebView mostrarlo.

La depuración compilación es diferente de la versión una, así:

Tenga en cuenta su estructura de archivos de proyecto como ese [ este caso, si para una depuración montar ]:

src
  |
  debug
      |
      assets
           |
           index.html

Se debe llamar index.html en su WebView como:

WebView web=(WebView)findViewById(R.id.web);
web.loadUrl("file:///android_asset/index.html");

El diseño:

<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"/>

Así que presenta, para montar el lanzamiento, así debería ser:

src
  |
  release
        |
        assets
             |
             index.html  
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top