HTML dosyasını WebView'e yükleyin


189

Ben bir WebView yüklemek istiyorum o (css dosyaları ve Javascript kütüphaneleri) işaret diğer bazı kaynakları ile birlikte yerel bir html sayfası var. Bu nasıl başarılabilir?

Belki de tedarik etmenin en iyi yolu değil ama hala deniyorum.


benim için nokta html -webView.loadUrl ("dosya: /// android_asset / dosyaadı") düşürdüyse işe yaradı;
quemeful

4
@ Joe'nun cevabını kabul etmek istememenizin bir nedeni var mı?
ClassA

3
webview.loadUrl ( "file: ///android_asset/sample.html"); - buraya tıklayın
c49

Yanıtlar:


350

En kolay yol büyük olasılıkla web kaynaklarınızı varlıklar klasörüne koymak ve ara :

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

Java ve Webview arasında Tam İletişim için Buna Bakın

Güncelleme: Varlıklar klasörü genellikle aşağıdaki klasördür: <project>/src/main/assets Bu, <app>.imldosyanızdaki varlık klasörü yapılandırma ayarında şu şekilde değiştirilebilir :

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” />Android Studio'da öğeler klasörünün nereye yerleştirileceği makalesine bakın.


6
Bu sorun gerçekten bir SSS.
shihpeng

2
Varlıkları kullanmak konusunda çok olumsuz iseniz muhtemelen bir Dize oluşturabilirsiniz ... (bkz. Stackoverflow.com/questions/4543349/load-local-html-in-webview )
Joe

24
Bu doğru cevap olarak işaretlenmeli, çünkü gerçekten öyle.
gorodechnyj

6
@ SK9 Aynı durum, başlangıç ​​etkinliği sınıfınızın adını değiştirirseniz ve bunu AndroidManifest.xmlyansıtacak şekilde güncellemezseniz , başka bir öğe veya beklenen dosya eksikse geçerlidir . (Şahsen, URL / dosya yolunu dize kaynaklarına koymanızı ve oraya yolun programın diğer tüm dize verileriyle olmasını sağlayacak şekilde erişmenizi öneririm, ancak bu öğe / kaynak bağımlılığı.)
JAB

7
Varlıklar klasörünün nasıl oluşturulacağını bilmeyenler için "app" -> "New" -> "Folder" -> "Assets Folder" öğelerine sağ tıklayın ve "Finish" seçeneğine tıklayın. Android Studio, öğeler klasörünü doğru yolda oluşturur. Ve html dosyanızı yeni varlıklar klasörüne taşımanız yeterlidir. Referans: stackoverflow.com/questions/18302603/…
Yuchao Zhou

28

muhtemelen bu örnek yardımcı olabilir:

  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
Orada harici bellekte html olan örnekte, uygulama içinde paketlenmiş olması en iyisidir
Jonathan García

1
"file: ///" yerel aygıt dizinindeki HTML dosyasını kullanırken önemlidir. Teşekkürler
ralphgabb

5

Bu durumda, kullanmak WebView#loadDataWithBaseUrl()daha iyidir WebView#loadUrl()!

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

url: url / path Tüm JavaScript dosyalarınızın ve html bağlantılarınızın dizini işaret eden dize kökenlidir. Boşsa, bununla ilgili: boş. data: hmtl dosyanızı içeren dize, örneğin BufferedReader ile okuyun

Daha fazla bilgi: WebView.loadDataWithBaseURL (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)


3
Nedir veri değişken? Lütfen bir örnek veriniz.
IgorGanapolsky

0

Kabul Edilen Cevap benim için çalışmıyor, Bu benim için işe yarıyor

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

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

Cep telefonunuzun sürümü nedir?
Jimale Abdi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.