2014-09-29 12 views
9

मेरे पास एक HTML5 एप्लिकेशन है जिसे मैं वेबव्यू के साथ लपेटता हूं। पृष्ठों के बीच उपयोगकर्ता इनपुट मानों को संग्रहीत करने और पुनर्प्राप्त करने के लिए, मैं स्थानीय स्टोरेज HTML5 सुविधा का उपयोग करता हूं।स्थानीय स्टोरेज एचटीएमएल 5 सुविधा सैमसंग एंड्रॉइड डिवाइस पर वेबव्यू में काम नहीं कर रही है

यह मेरे नेक्सस 4 (एंड्रॉइड 4.4.4) पर ठीक काम करता है, लेकिन यह सैमसंग गैलेक्सी टैब 2 (एंड्रॉइड 4.3.एक्स) पर काम नहीं करता है (= कुछ नहीं होता है, लेकिन लॉगकैट में कोई त्रुटि नहीं है)। या, अधिक स्पष्ट होने के लिए: सैमसंग पर , यह काम नहीं करता है अगर HTML पृष्ठ ऐप के संपत्ति फ़ोल्डर के भीतर से लोड किए जाते हैं। यह काम करता है हालांकि अगर मैं पृष्ठों को सर्वर पर रखता हूं, जैसा कि नीचे की रेखा में नीचे दिया गया है।

हालांकि, नेक्सस 4 पर, फ़ाइल से लोड हो रहा है: /// android_asset/और यदि मैं डेस्कटॉप ब्राउज़र (क्रोम, फ़ायरफ़ॉक्स) पर फ़ाइल लोड करता हूं तो फ़ाइल: // पथ, यह भी काम कर रहा है।

अद्यतन 1: मेरे पास एक और उपयोगकर्ता था जिसने एलजी डिवाइस के साथ इस मुद्दे की रिपोर्ट की, इसलिए यह सैमसंग विशिष्ट प्रतीत नहीं होता है।

अपडेट 2: स्थानीय स्टोरेज से मूल्य संग्रहीत करना और लोड करना एक ही पृष्ठ पर सभी उपकरणों पर ठीक काम करता है, हालांकि, अलग-अलग पृष्ठों के बीच नहीं। मेरे उदाहरण में, मैं 01_home.html पर मान को संग्रहीत और पुनर्प्राप्त कर सकता हूं, लेकिन जब मैं एंड्रॉइड_सेट फ़ोल्डर में किसी अन्य पृष्ठ पर जाता हूं, तो मैं इसे और नहीं पढ़ सकता (एलजी, सैमसंग डिवाइस पर)। हालांकि नेक्सस 4 पर ठीक काम करता है।

नीचे वेब दृश्य की सेटिंग्स हैं। पन्नों में

webView = (WebView)this.findViewById(R.id.webView); 
    webViewClient = new MyWebViewClient(this); 
    webViewClient.setSm(sm); 
    webView.setWebViewClient(webViewClient); 
    WebSettings webSettings = webView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setDomStorageEnabled(true); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.getSettings().setDomStorageEnabled(true); 
    webView.getSettings().setPluginState(WebSettings.PluginState.ON); 
    webView.getSettings().setAppCacheEnabled(false); 
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    webView.getSettings().setUseWideViewPort(true); 
    webView.getSettings().setLoadWithOverviewMode(true); 
    webView.getSettings().setBuiltInZoomControls(false); 
    webView.getSettings().setSupportZoom(false); 
    webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR); 

    webView.loadUrl("file:///android_asset/01_home.html"); // does NOT work! 
    // webView.loadUrl("http://192.168.178.33/01_home.html"); // does work! 

स्थानीय संग्रहण कोड:

// storing 
var data = document.getElementById('data').value; 
window.localStorage.setItem((1), data); 

// reading 
document.getElementById('data').value = window.localStorage.getItem(1); 
+0

विषय: https://groups.google.com/forum/#!topic/ एंड्रॉइड डेवलपर्स/gssOdQLroAY –

उत्तर

4

मैं इस एक ही बग मिला। सभी नेक्सस उपकरणों पर काम किया लेकिन सभी सैमसंग उपकरणों ने मेरे उपयोगकर्ता परिवर्तन खो दिए। मुझे पता है कि नीचे दी गई विधि को हटा दी गई है, लेकिन यह मेरी समस्या हल करती है।

webview.getSettings().setDatabasePath("/data/data/" + webview.getContext().getPackageName() + "/databases/"); 
16

इस के जवाब कहीं और तैनात Android webview & localStorage

समाधान प्रस्तावित हैं:

Android डेवलपर की सूची पर
webView.getSettings().setDomStorageEnabled(true); 
webView.getSettings().setDatabaseEnabled(true); 
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { 
    webView.getSettings().setDatabasePath("/data/data/" + webView.getContext().getPackageName() + "/databases/"); 
} 
+0

Gr8 मैन। एक जादू की तरह काम किया। +1 –

+1

सैमसंग ए 5 में काम नहीं कर रहा है – Ricardo

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