Carica file HTML in WebView


189

Ho una pagina html locale insieme a diverse altre risorse indicate da essa (file CSS e librerie Javascript) che vorrei caricare in un WebView. Come è stato possibile raggiungere questo obiettivo?

Forse non è il modo migliore di procedere ma sto ancora sperimentando.


per me ha funzionato se ho lasciato cadere il punto html -webView.loadUrl ("file: /// android_asset / nomefile");
quemeful

4
Qualche motivo per cui non vuoi accettare la risposta di @ Joe?
ClassA,

3
webview.loadUrl ( "file: ///android_asset/sample.html"); - clicca qui
c49

Risposte:


350

Il modo più semplice sarebbe probabilmente quello di mettere le tue risorse web nella cartella delle risorse quindi chiamare:

webView.loadUrl("file:///android_asset/filename.html");

Per una comunicazione completa tra Java e Webview Vedi questo

Aggiornamento: la cartella delle risorse è in genere la seguente cartella: <project>/src/main/assets può essere modificata nelle impostazioni di configurazione della cartella delle risorse nel <app>.imlfile come:

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” /> Vedi l'articolo Dove posizionare la cartella delle risorse in Android Studio


6
Questo problema è davvero una FAQ.
shihpeng,

2
Presumibilmente potresti anche caricarlo da una stringa se sei molto contrario all'utilizzo delle risorse ... (vedi stackoverflow.com/questions/4543349/load-local-html-in-webview )
Joe

24
Questo dovrebbe essere contrassegnato come risposta corretta, perché lo è davvero.
Gorodechnyj,

6
@ SK9 Lo stesso vale se manca qualsiasi altra risorsa o file previsto, ad esempio se si modifica il nome della classe di attività iniziale e non si aggiorna AndroidManifest.xmlper riflettere ciò. (Personalmente, consiglierei di inserire il percorso URL / file nelle risorse stringa e di accedervi da lì in modo che il percorso sia con tutti gli altri dati stringa per il programma, ma che non sia realmente direttamente correlato al problema dell'asset / dipendenza dalle risorse.)
JAB

7
Per coloro che non sanno come creare la cartella delle risorse, fare clic con il tasto destro su "app" -> "Nuovo" -> "Cartella" -> "Cartella risorse" e fare clic su "Fine". Android Studio creerà la cartella delle risorse nel percorso corretto. E devi solo spostare il tuo file html nella nuova cartella delle risorse. Riferimento: stackoverflow.com/questions/18302603/...
Yuchao Zhou

28

probabilmente questo esempio potrebbe aiutare:

  WebView lWebView = (WebView)findViewById(R.id.webView);
  File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
  lWebView.loadUrl("file:///" + lFile.getAbsolutePath());

3
nell'esempio che ha l'html nella memoria esterna, è meglio averlo impacchettato all'interno dell'applicazione
Jonathan García

1
"file: ///" è importante quando si utilizza un file HTML dalla directory del dispositivo locale. Grazie
ralphgabb il

5

In questo caso, usare WebView#loadDataWithBaseUrl()è meglio di WebView#loadUrl()!

webView.loadDataWithBaseURL(url, 
        data,
        "text/html",
        "utf-8",
        null);

url: url / path La stringa che punta alla directory tutti i file JavaScript e i collegamenti HTML hanno la loro origine. Se null, si tratta di: vuoto. data: stringa contenente il file hmtl, ad esempio letto con BufferedReader

Ulteriori informazioni: WebView.loadDataWithBaseURL (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)


3
Che cos'è la variabile dati ? Fornisci un esempio
IgorGanapolsky,

0

La risposta accettata non funziona per me, questo è ciò che funziona per me

WebSettings webSetting = webView.getSettings();
    webSetting.setBuiltInZoomControls(true);
    webView1.setWebViewClient(new WebViewClient());

   webView.loadUrl("file:///android_asset/index.html");

Qual è la versione del tuo cellulare?
Jimale Abdi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.