2012-02-23 13 views
21

मैं अपने रिमोट एचटीएमएल पेज पर जावास्क्रिप्ट और छवियों को कैसे बना सकता हूं संपत्ति फ़ोल्डर (या सिर्फ कोई स्थानीय संसाधन) से लोड किया जा सकता है?संपत्तियों से एंड्रॉइड वेबव्यू जावास्क्रिप्ट

+2

आपको जवाब को उत्तर में रखना चाहिए ताकि हम इसे बंद कर सकें। –

उत्तर

35

उत्तर: इस विशेष मामले आप होना चाहिए में

String html = readHtml("http://mydomain.com/my.html"); 
mWebView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", ""); 

: आधार URL के साथ

private String readHtml(String remoteUrl) { 
    String out = ""; 
    BufferedReader in = null; 
    try { 
     URL url = new URL(remoteUrl); 
     in = new BufferedReader(new InputStreamReader(url.openStream())); 
     String str; 
     while ((str = in.readLine()) != null) { 
      out += str; 
     } 
    } catch (MalformedURLException e) { 
    } catch (IOException e) { 
    } finally { 
     if (in != null) { 
      try { 
       in.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    return out; 
} 


2. लोड WebView:
1. आप स्ट्रिंग में HTML लोड करना होगा सभी .js फ़ाइलें जिन्हें आप पृष्ठ पर उपयोग करना चाहते हैं, परियोजना के "संपत्ति" फ़ोल्डर के नीचे कहीं भी रहते हैं। उदाहरण के लिए:

<script src="file:///android_asset/jquery.min.js" type="text/javascript"></script> 

ही अन्य सभी स्थानीय पर लागू होता है:

/MyProject/assets/jquery.min.js 


3. अपने रिमोट html पृष्ठ में आप .js और .css फ़ाइलें जो की तरह अपने आवेदन में रहते हैं लोड करने के लिए है छवियों जैसे संसाधनों, आदि उनके रास्ते

file:///android_asset/ 

वेब दृश्य के साथ शुरू करने के लिए पहली बार कच्चे एचटीएमएल आप स्ट्रिंग के रूप में प्रदान की है लोड, तो .js चुनेंगे है, .css और अन्य स्थानीय संसाधनों और फिर दूरस्थ सामग्री लोड करेंगे।

+4

यदि आप 'loadDataWithBaseURL' के साथ मूल पथ सेट करते हैं तो आपको पूर्ण पथ क्यों देना होगा? इसके अलावा, ऐसा लगता है कि यह 4.1+ में टूट जाता है। :( – Maarten

+0

यह मेरे लिए 4.1+ में काम करता प्रतीत होता है, और अब तक एकमात्र तरीका है कि मैं जावास्क्रिप्ट के साथ एचटीएमएल लोड करने में सक्षम हूं जो संपत्ति फ़ोल्डर में हार्डकोड नहीं है। – Chris

+0

यदि एचटीएमएल पहले से ही कोई संभावना नहीं है प्रोग्राम को संपादित करने के लिए इन फ़ाइलों की पहचान करनी चाहिए और * स्ट्रिंग एचटीएमएल * – htafoya

2

यदि गतिशील रूप से आपका HTML बनाते हैं और फिर loadDataWithBaseURL का उपयोग करके सुनिश्चित करें कि कोई स्थानीय संसाधन उदा। आपकी संपत्ति फ़ोल्डर में जावास्क्रिप्ट को एचटीएमएल में फ़ाइल के रूप में संदर्भित किया जाता है: /// (मैं इसे काम करने में घंटों का खर्च करता हूं)

+0

क्या आप कृपया विस्तार से बता सकते हैं कि स्ट्रिंग के रूप में HTML प्राप्त करने के बाद .js को गतिशील रूप से (फ़ाइल: //) पथ कैसे जोड़ें। – Adi

संबंधित मुद्दे