Android पर webview में html string कैसे पास करे


141

नमस्ते मैं xml पार्स कर रहा हूं और फिर इसे वेब दृश्य पर लोड कर रहा हूं, पार्स करने के बाद मैं चार तार बना रहा हूं ताकि मैं एक दृश्य में सभी स्ट्रिंग को जोड़ सकूं। मैं वेब दृश्य पर दो दृश्य प्राप्त करने में सक्षम हूं, लेकिन पहले दो तार नहीं।

Pls मुझे अपने कोड के साथ सुझाव दें, मैं कहां गलत हो रहा हूं और वेब दृश्य पर HTML स्वरूपित स्वरूप प्राप्त करने का सही तरीका क्या है। Pls मेरे कोड पर एक नज़र डालें और मुझे इस मुद्दे को हल करने में मदद करें।

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        String chapterTitle = "";
        String SubChapterTitle="";
        String chapterIntro ="";
        String chapterContent="";
        View view = convertView;
        if (convertView == null) {
            // view = inflater.inflate(resourceid, null);
            view = getLayoutInflater().inflate(R.layout.webviewitem, null);
        }
        synchronized (view) {
            WebView wv = (WebView) view.findViewById(R.id.contentWebView);

            WebSettings settings = wv.getSettings();
            settings.setUseWideViewPort(true);
            settings.setLoadWithOverviewMode(true);
            settings.setJavaScriptEnabled(true);
            settings.setDefaultZoom(ZoomDensity.FAR);
            // wv.setBackgroundColor(0);
            wv.setVerticalScrollBarEnabled(false);
            wv.setHorizontalScrollBarEnabled(false);
            /*String txtChapTitle = Intro.book.getsecretList().get(position)
                    .getChtitle().toString();*/

            if (!(Intro.book.getsecretList().get(position).getChtitle()
                    .toString().equals(""))){
            chapterTitle = "<b><fontSize=4>"+Intro.book.getsecretList().get(position)
            .getChtitle().toString()+"</font></b>";
            }
            if (!(Intro.book.getsecretList().get(position)
                    .getSubtitle() == null)) {
                SubChapterTitle = "<b><fontSize=4>"+Intro.book.getsecretList().get(position)
                .getSubtitle().toString()+"</font></b>";
            }
            if (!(Intro.book.getsecretList().get(position)
                    .getIntro() == null)) {
            chapterIntro = "<b><fontSize=2>"+Intro.book.getsecretList().get(position)
                .getIntro().toString()+"</font></b>";
            }
            if (!(Intro.book.getsecretList().get(position)
                    .getContent() == null)) {
            chapterContent = "<fontSize=2>"+Intro.book.getsecretList().get(position)
                .getContent().toString()+"</font>";
            }

            StringBuilder content = new StringBuilder();
            content.append(chapterTitle+SubChapterTitle+chapterIntro+chapterContent);

            JsInterface Jsi = new JsInterface();
            Jsi.wordDef = content ;
            Log.v("Content", "" +content);
            wv.addJavascriptInterface(Jsi, "interfaces");

            wv.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    view.setHapticFeedbackEnabled(false);
                }
            });

            wv.setWebChromeClient(new WebChromeClient() {
                @Override
                public boolean onJsAlert(WebView view, String url,
                        String message, JsResult result) {
                    return super.onJsAlert(view, url, message, result);
                }
            });

            wv.loadUrl("file:///android_asset/wordview.html");
        }
        return view;
    }
}

मैं वेब दृश्य पर ChapterIntro और Chaptercontent प्राप्त करने में सक्षम हूं, लेकिन पहले दो तार नहीं pls मेरी मदद करो।

जवाबों:


190

मैं नीचे लाइन द्वारा सफलतापूर्वक किया है

 //data == html data which you want to load 
 WebView webview = (WebView)this.findViewById(R.id.webview);
 webview.getSettings().setJavaScriptEnabled(true);
 webview.loadDataWithBaseURL("", data, "text/html", "UTF-8", "");

क्या आप इसे <head> index.php / index.html पर जोड़ते हैं?
Mthe beseti

1
फिर यदि आप चाहें, तो ठीक है
सिद्धपुरा अमित

यह थोड़ा अंतराल के बाद यूआई को अपडेट करता है। उस चीज़ को कैसे ठीक करें?
नरेंद्र सिंह

क्या मैं "text / html", "UTF-8" का उपयोग कर सकता हूं, अगर मैं webView.loadUrl ("जावास्क्रिप्ट: MyFunction (डेटा," टेक्स्ट / html "," UTF-8 ") का उपयोग करके जावास्क्रिप्ट फ़ंक्शन को html पास करना चाहता हूं?
user1788736

नहीं, मैंने इस तरह का प्रयोग नहीं किया है
सिद्धपुरा अमित

168

WebView में अपना डेटा लोड करने के लिए। लोड लोड करें () WebView की विधि

webView.loadData(yourData, "text/html; charset=utf-8", "UTF-8");

आप इस उदाहरण को देख सकते हैं

http://developer.android.com/reference/android/webkit/WebView.html


मैं उस के साथ की कोशिश की, अभी भी नहीं किया जा रहा है के साथ भी लोड करने की कोशिश की
cavallo

यह जावास्क्रिप्ट युक्त स्ट्रिंग के साथ काम करने वाला है? यह मेरे लिए काम नहीं कर रहा है
Edu

27
यह होना चाहिएwebView.loadData(yourData, "text/html; charset=utf-8", "UTF-8");
Jaroslav

5
"पाठ / html; चारसेट = utf-8" एक बड़ा अंतर बनाता है, प्रतीक वर्ण इसके बिना ठीक से प्रस्तुत नहीं करते हैं।
Mic Fok

29

पासिंग नल बेहतर होगा। पूर्ण कोड इस प्रकार हैं:

WebView wv = (WebView)this.findViewById(R.id.myWebView);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadDataWithBaseURL(null, "<html>...</html>", "text/html", "utf-8", null);

क्या आप इसे <head> index.php / index.html पर जोड़ते हैं?
बेेटी

@mthethelelibeseti यह एंड्रॉइड कोड है, न कि HTML का। या मैंने आपके सवाल को गलत समझा?
जेफरी नियो

यह सभी प्रकार के html स्ट्रिंग्स के लिए कार्यशील समाधान है। धन्यवाद @JeffreyNeo
आकाश बिसारिया

2

लोड हो रहा है सामान्य डेटा मेरे लिए काम नहीं कर रहा था, बस ठीक काम कर रहे Base64 में परिवर्तित।

String unencodedHtml ="<html><body>'%28' is the code for '('</body></html>";
tring encodedHtml = Base64.encodeToString(unencodedHtml.getBytes(), Base64.NO_PADDING);
webView.loadData(encodedHtml, "text/html", "base64");

WebView पर विवरण प्राप्त करें

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