2015-10-27 9 views
10

से पहले लोकल स्टोरेज पर मूल्य सहेजें, वेबव्यू पर एक यूआरएल लोड करने से पहले मैं ब्राउजर लोकल स्टोरेज के अंदर एक वैल्यू सेट करना चाहता हूं।एंड्रॉइड - WebView.loadUrl()

अब तक इस मूल्य को सेट करने में प्रबंधित करने का एकमात्र तरीका पृष्ठ लोड होने के बाद है। यह मैं कैसे मान सेट कर सकते हैं:

browser.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onPageFinished(WebView view, String url) { 
       loadUrl("javascript: LocalStorage.set('namespace', 'key', 'value');"); 
     } 
} 

मैं विधि onPageStarted() ओवरराइड करने के लिए प्रयास किया, लेकिन मूल्य संग्रहीत नहीं है।

मैं browser.loadUrl() पर कॉल करने से पहले यह कुंजी/मान कैसे सेट कर सकता हूं? यूआरएल/पेज इस मान पर निर्भर करता है, इसलिए मुझे पृष्ठ लोड करने से पहले मूल्य निर्धारित करने की आवश्यकता है।

+0

क्यों SharedPreferences का उपयोग नहीं (उदाहरण के लिए), आप चीजों को स्टोर करने के लिए चाहते हैं, तो ...? – OWADVL

+0

मुझे वेबव्यू के अंदर डेटा को सहेजने की ज़रूरत है, इसलिए वेबपृष्ठ जावास्क्रिप्ट इसे पढ़ सकता है। मैं नहीं देखता कि साझा समस्याएं मेरी समस्या का समाधान कैसे कर सकती हैं। – Bugdr0id

उत्तर

5

आप क्या कर सकते हैं javascript में वास्तविक यूआरएल में रीडायरेक्ट सेट करें और webview.loadData() का उपयोग करके जावास्क्रिप्ट प्लस रीडायरेक्ट लोड करें।

String injection = "<html><head><script type='javascript'>LocalStorage.set('namespace', 'key', 'value');window.location.replace('YOUR_URL_HERE');</script></head><body></body></html>"; 
webview.loadData(injection, "text/html", null); 

हालांकि यह ध्यान रखें कि आप एक फ़ाइल पहले से पहले यह काम करता है के लिए है कि को बचाने के लिए आवश्यकता हो सकती है: देखने How to load a javascript redirect into android webview?

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