Muat file HTML ke dalam WebView

189

Saya memiliki halaman html lokal bersama dengan beberapa sumber lain yang ditunjuk olehnya (file css dan perpustakaan Javascript) yang ingin saya muat ke dalam WebView. Bagaimana ini bisa dicapai?

Mungkin bukan cara terbaik untuk melanjutkan tetapi saya masih bereksperimen.

klaus johan
sumber
bagi saya itu berhasil jika saya menjatuhkan dot html -webView.loadUrl ("file: /// android_asset / filename");
quemeful
4
Ada alasan mengapa Anda tidak ingin menerima jawaban @ Joe?
ClassA
3
webview.loadUrl ("file: ///android_asset/sample.html"); - klik di sini
c49

Jawaban:

350

Cara termudah mungkin adalah dengan memasukkan sumber daya web Anda ke folder aset lalu panggil:

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

Untuk Komunikasi Lengkap antara Java dan Webview, Lihat Ini

Pembaruan: Folder aset biasanya folder berikut: <project>/src/main/assets Ini dapat diubah dalam pengaturan konfigurasi folder aset di <app>.imlfile Anda sebagai:

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” /> Lihat Artikel Tempat menempatkan folder aset di Android Studio

Joe
sumber
6
Masalah ini sebenarnya adalah FAQ.
shihpeng
2
Anda mungkin juga dapat memuatnya dari String jika Anda sangat tidak suka menggunakan aset ... (lihat stackoverflow.com/questions/4543349/load-local-html-in-webview )
Joe
24
Ini harus ditandai sebagai jawaban yang benar, karena itu memang benar.
gorodechnyj
6
@ SK9 Hal yang sama berlaku jika aset lain atau file yang diharapkan hilang, seperti jika Anda mengubah nama kelas aktivitas awal Anda dan tidak memperbarui AndroidManifest.xmluntuk mencerminkan hal itu. (Secara pribadi, saya akan merekomendasikan menempatkan URL / path file dalam sumber daya string dan mengaksesnya dari sana sehingga jalur tersebut dengan semua data string lainnya untuk program, tetapi itu tidak benar-benar terkait langsung dengan masalah aset / ketergantungan sumber daya.)
JAB
7
Bagi mereka yang tidak tahu cara membuat folder aset, klik kanan pada "app" -> "New" -> "Folder" -> "Folder Aset", dan klik "Selesai". Android Studio akan membuat folder aset di jalur yang benar. Dan Anda hanya perlu memindahkan file html Anda ke folder aset baru. Referensi: stackoverflow.com/questions/18302603/…
Yuchao Zhou
28

mungkin sampel ini dapat membantu:

  WebView lWebView = (WebView)findViewById(R.id.webView);
  File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
  lWebView.loadUrl("file:///" + lFile.getAbsolutePath());
Ajesh
sumber
3
dalam contoh di sana yang memiliki html di memori eksternal, yang terbaik adalah mengemasnya dalam aplikasi
Jonathan García
1
"file: ///" penting ketika menggunakan file HTML dari direktori perangkat lokal. Terima kasih
ralphgabb
5

Dalam hal ini, menggunakan WebView#loadDataWithBaseUrl()lebih baik daripada WebView#loadUrl()!

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

url: url / path String yang menunjuk ke direktori semua file JavaScript dan tautan html Anda berasal. Jika nol, ini tentang: kosong. data: String yang berisi file hmtl Anda, baca dengan BufferedReader misalnya

Info selengkapnya : WebView.loadDataWithBaseURL (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)

khaintt
sumber
3
Apa itu variabel data ? Tolong berikan contoh.
IgorGanapolsky
0

Jawaban yang Diterima tidak bekerja untuk saya, Inilah yang bekerja untuk saya

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

   webView.loadUrl("file:///android_asset/index.html");
Jimale Abdi
sumber
Apa versi Ponsel Anda?
Jimale Abdi