Domanda

Ho fatto campioni provo, demo da codici di Google e di altre risorse con WebView, ma quando cerco di farlo nel mio codice, non funziona per me.

Voglio carico myfile.html che ho messo in attività cartella, e l'utilizzo di:

private WebView myWebView;

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

In caso di errore spettacoli emulatore

  

La pagina web all'indirizzo file:///android_assets/myfile.html non poteva essere   caricato come: Il file richiesto non è stato trovato.   /android_assets/myfile.html

Quando ho messo il file nella cartella res/raw/ e utilizzando:

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

allora solo emulatore Android 2.2 API di livello 8 in grado di caricare il file, probabilmente, altre versioni più vecchie mostrano lo stesso errore. Mi sto perdendo qualcosa?

C'è un modo di caricare un file HTML esistente nel pacchetto di applicazione che funziona su tutte le versioni API?

È stato utile?

Soluzione

ok, quello era il mio stupido errore. I post qui la risposta in caso qualcuno ha lo stesso problema.

Il percorso corretto per i file memorizzati in attività cartella è file:///android_asset/* (senza "s" per le attività cartella che pensavo sempre deve avere una "s").

E, mWebView.loadUrl("file:///android_asset/myfile.html"); funziona sotto tutti i livelli di API.

Ancora non capire perché mWebView.loadUrl("file:///android_res/raw/myfile.html"); funziona solo a livello di API 8. Ma non importa ora.

Altri suggerimenti

incollare il file .html nella cartella Assets della cartella di progetto. e creare un file xml nella cartella di layout con il codice 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"
    />

codice aggiuntivo fol nell'attività

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.

Se la struttura dovrebbe essere simile a questo:

/assets/html/index.html

/assets/scripts/index.js

/assets/css/index.css

Poi basta fare ( Android WebView: movimentazione cambia l'orientamento )

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

Assicurati di aggiungere

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

Poi basta usare 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">

Copiare e incollare il file HTML nella cartella delle attività del progetto e aggiungere sotto il codice nella tua attività su 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);

Si potrebbe leggere il file html manualmente e quindi utilizzare loadData o loadDataWithBaseUrl metodi di WebView di mostrarlo.

Il debug compilazione è diverso dal stampa uno, così:

Considerate la vostra struttura dei file di progetto del genere [ questo caso se per un debug assemblare ]:

src
  |
  debug
      |
      assets
           |
           index.html

Si dovrebbe chiamare index.html nel vostro WebView come:

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

Il layout:

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

così via, per assemblare il rilascio, dovrebbe essere come:

src
  |
  release
        |
        assets
             |
             index.html  
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top