HTML फ़ाइल को WebView में लोड करें


189

मेरे पास एक स्थानीय HTML पृष्ठ है, इसके साथ कई अन्य संसाधनों (सीएसएस फाइलें और जावास्क्रिप्ट लाइब्रेरी) द्वारा इंगित किया गया है, जिन्हें मैं एक वेब व्यू में लोड करना चाहूंगा। यह कैसे हासिल किया जा सकता है?

शायद प्रक्रिया करने का सबसे अच्छा तरीका नहीं है, लेकिन मैं अभी भी प्रयोग कर रहा हूं।


अगर मैंने डॉट html -webView.loadUrl ("फ़ाइल: /// android_asset / फ़ाइल नाम") गिरा दिया तो मेरे लिए यह काम कर गया;
चतुर्थी

4
किसी भी कारण से आप @ जो के उत्तर को स्वीकार नहीं करना चाहते हैं?
क्लास

3
webview.loadUrl ( "फ़ाइल: ///android_asset/sample.html"); - यहां क्लिक करें
c49

जवाबों:


349

सबसे आसान तरीका है शायद में अपने वेब संसाधनों डाल करने के लिए किया जाएगा फ़ोल्डर संपत्ति तो कहते हैं:

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

जावा और वेबव्यू के बीच पूर्ण संचार के लिए यह देखें

अपडेट: एसेट्स फोल्डर आमतौर पर निम्नलिखित फोल्डर होता है: <project>/src/main/assets इसे आपकी <app>.imlफाइल में एसेट फोल्डर कॉन्फ़िगरेशन सेटिंग में बदला जा सकता है :

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” />Android स्टूडियो में संपत्ति फ़ोल्डर कहां रखें लेख देखें


6
यह समस्या वास्तव में एक सामान्य प्रश्न है।
शिफेंग

2
यदि आप संपत्ति का उपयोग करने के लिए बहुत प्रतिकूल हैं, तो आप संभवतः इसे एक स्ट्रिंग के रूप में भी लोड कर सकते हैं ... (देखें stackoverflow.com/questions/4543349/load-local-html-in-webview )
जो

24
इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए, क्योंकि यह वास्तव में है।
गोरोद्नेक्ज

6
@ SK9 वही लागू होता है यदि कोई अन्य संपत्ति या अपेक्षित फ़ाइल गुम हो जाती है, जैसे कि यदि आप अपने आरंभिक गतिविधि वर्ग का नाम बदलते हैं और AndroidManifest.xmlउसे प्रतिबिंबित करने के लिए अपडेट नहीं करते हैं । (व्यक्तिगत रूप से, मैं URL / फ़ाइल पथ को स्ट्रिंग संसाधनों में डालने और इसे वहां से इस तरह एक्सेस करने की सलाह दूंगा कि यह पथ प्रोग्राम के अन्य सभी स्ट्रिंग डेटा के साथ है, लेकिन यह वास्तव में संपत्ति के मुद्दे से संबंधित नहीं है / संसाधन निर्भरता।)
JAB

7
उन लोगों के लिए जो संपत्ति फ़ोल्डर बनाना नहीं जानते हैं, "ऐप" पर राइट क्लिक करें -> "नया" -> "फ़ोल्डर" -> "एसेट्स फ़ोल्डर", और "फिनिश" पर क्लिक करें। Android Studio सही पथ में संपत्ति फ़ोल्डर बनाएगा। और आपको अपनी html फ़ाइल को नए एसेट फ़ोल्डर में ले जाना होगा। संदर्भ: stackoverflow.com/questions/18302603/…
Yuchao झोउ

28

शायद यह नमूना मदद कर सकता है:

  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
उदाहरण में वहाँ है कि बाहरी स्मृति में html है, यह आवेदन के भीतर पैक किया जाना सबसे अच्छा है
जोनाथन García

1
स्थानीय डिवाइस निर्देशिका से HTML फ़ाइल का उपयोग करते समय "फ़ाइल: ///" महत्वपूर्ण है। धन्यवाद
ralphgabb

5

इस मामले में, का उपयोग WebView#loadDataWithBaseUrl()करना बेहतर है WebView#loadUrl()!

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

url: url / path स्ट्रिंग को निर्देशिका की ओर इशारा करते हुए आपकी सभी जावास्क्रिप्ट फाइलें और HTML लिंक उनके मूल हैं। यदि अशक्त है, तो यह खाली है। डेटा: स्ट्रिंग अपने hmtl फ़ाइल, उदाहरण के लिए BufferedReader के साथ पढ़ें

अधिक जानकारी: WebView.loadDataWithBaseURL (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)


3
डेटा चर क्या है ? कृपया एक उदाहरण दें।
इगोरगानापोलस्की

0

स्वीकृत उत्तर मेरे लिए काम नहीं कर रहा है, यही मेरे लिए काम करता है

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

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

व्हाट्सएप आपके मोबाइल का संस्करण है?
जिमाले आब्दी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.