2017-05-18 25 views
8

मेरे पास एक वेबव्यू एंड्रॉइड एप्लिकेशन है जो कुछ एचटीएमएल 5/जावास्क्रिप्ट कोड वाला एक वेब पेज खोलता है। मैं अपने आवेदन के एंड्रॉइड पक्ष से कुछ पक्षों को ब्राउज़र पक्ष में पास करना चाहता हूं। इसलिए मैंने एंड्रॉइड से एचटीएमएल 5 स्थानीय स्टोरेज पर लिखना सोचा और फिर वेब पेज का जावास्क्रिप्ट हिस्सा स्थानीय स्टोरेज से मूल्य पढ़ता है।एंड्रॉइड एचटीएमएल 5 स्थानीय स्टोरेज पर मूल्य कैसे लिख सकता है?

एंड्रॉइड वेबव्यू एचटीएमएल 5 स्थानीय स्टोरेज पर कैसे लिख सकता है?

या क्या एंड्रॉइड कुछ मूल्यों को उस पृष्ठ के जावास्क्रिप्ट में पास कर सकता है जो इसे लोड करता है? (पूरे पृष्ठ को फिर से लोड करने के बिना) एचटीएमएल 5 स्थानीय स्टोरेज पर कुछ लिखने के लिए कहें और फिर जावास्क्रिप्ट कोड एचटीएमएल 5 स्थानीय स्टोरेज

से how to pass json formatted data from a webview to a html page से अलग है। मैं द्वारा HTML5 LocalStorage पर लिखने की कोई तरीका होना चाहिए एंड्रॉयड

+0

संभावित डुप्लिकेट [वेबव्यू से जेएसओएन-स्वरूपित डेटा को HTML पृष्ठ पर कैसे पास करें] (http://stackoverflow.com/questions/10114993/how-to-pass-json-formatted-data-from-a -webview-to-a-html-page) – petey

+0

आपके लिए वेबव्यू पर डेटा पास करना क्यों आवश्यक है? – joshuamabina

उत्तर

3

एक स्ट्रिंग की तरह पास चर stackoverflow post:

webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageFinished(WebView view, String url) { 
       String key = "hello"; 
       String val = "world"; 
       if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { 
        webView.evaluateJavascript("localStorage.setItem('"+ key +"','"+ val +"');", null); 
       } else { 
        webView.loadUrl("javascript:localStorage.setItem('"+ key +"','"+ val +"');"); 
       } 
      } 
    }); 

दूसरा संस्करण JavaScriptInterface

Init अनुभाग

JavaScriptInterface jsInterface = new JavaScriptInterface(this); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.addJavascriptInterface(jsInterface, "JSInterface"); 

JavaScriptInterface

public class JavaScriptInterface { 
     private Activity activity; 

     public JavaScriptInterface(Activity activiy) { 
      this.activity = activiy; 
     } 

     public string getData(String someParameter){ 
      //also you can return json data as string and at client side do JSON.parse 
      if (someParameter == "give me data" && this.activity.data) { 
       return this.activity.data; 
      }else{ 
       return null; 
      } 
     } 
    } 

जे एस अनुभाग

<script> 
    function ready() { 
     var data = window.JSInterface.getData("give me data"); 
     localStorage.put("give me data", data) 
    }; 

    document.addEventListener("DOMContentLoaded", ready); 
</script> 
-1

आप .. जावास्क्रिप्ट के स्थान हैश संपत्ति से यह कर सकते हैं

एंड्रॉयड कोड इस तरह इस

WebView myWebView = (WebView) findViewById(R.id.myWebView); 
myWebView.loadUrl("http://www.example.com/#any_value"); 
myWebView.setWebViewClient(new MyWebViewClient()); 

और जावास्क्रिप्ट कोड देखो की तरह लग सकता है

var x = location.hash; //this will access the hash value you pass in url 
localStorage.setItem("save_my_value", x); 
+0

यह काम नहीं कर रहा है! मैं एंड्रॉइड कुछ डेटा को स्थानांतरित करता हूं, जैसे कि कुछ स्ट्रिंग, जेएस कोड मैंने उस एचटीएमएल पेज में लिखा है, दूसरी तरफ –

+0

नहीं, मैं हर बार एक नया मूल्य –

+0

@WaterfrVilla के साथ पूरे पेज को फिर से लोड नहीं करना चाहता हूं, हैश और जावास्क्रिप्ट की तरह यूआरएल :, आपके पृष्ठ को फिर से लोड नहीं करेगा –

3

का उपयोग कैसे करें एंड्रॉयड वेबव्यू पर लिख सकते हैं एचटीएमएल 5 स्थानीय भंडारण के लिए?

localStorage.setItem("data", value); 

नोट: स्थानीय संग्रहण के साथ, वेब एप्लिकेशन उपयोगकर्ता के ब्राउज़र में स्थानीय रूप से डेटा स्टोर कर सकते हैं। एचटीएमएल स्थानीय भंडारण; कुकीज़ से बेहतर है।
अपने एंड्रॉइड क्लास और वेबपृष्ठ को बांधने के लिए addJavaScriptInterface() को आजमाएं।

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