2012-03-14 8 views
17

पृष्ठभूमि:CookieManager और CookieSyncManager कुकीज़ समन्वयन नहीं कर आईसीएस में WebView के लिए (सभी पिछले API स्तरों पर काम करता है)

मैं अपने एप्लिकेशन के माध्यम से कुकीज़ acquireing कर रहा हूँ और उन्हें करने के लिए http अनुरोध करके आंतरिक रूप से उपयोग करें। उपयोगकर्ता किसी दिए गए समय पर वेबव्यू पर स्विच कर सकते हैं, इस मामले में मैं कुकीज़ को webView पर सिंक/इंजेक्ट करता हूं। CookieSyncManager का उपयोग कर WebView करने के लिए कुकीज़ सिंक्रनाइज़ करने के

कोड:

CookieSyncManager.createInstance(a); 
CookieManager cm = CookieManager.getInstance(); 
cm.setCookie(domain, cookieName + "=" + cookieValue); 
CookieSyncManager.getInstance().sync(); 

यह सभी API स्तरों एपीआई को छोड़कर 15+ (Android 4.0, आइस क्रीम सैंडविच) पर काम करता है। CookieManager एपीआई बहिष्कृत नहीं है।

इस समस्या का कारण क्या है और क्या कोई कामकाज है?

+0

कोई लॉग इन त्रुटियां नहीं? – TryTryAgain

+0

नहीं, कोई त्रुटि लॉग नहीं है। –

+0

एक ही समस्या है! WAAAA –

उत्तर

3

आप इस काम को करने के लिए अपाचे डिफॉल्ट एचटीपी क्लाइंट को आजमा सकते हैं, मुझे नहीं लगता कि यह आइस क्रीम सैंडविच में बदला गया है।

मैं इस sample पाया है, लेकिन वहाँ बहुत सारे यहाँ

+1

यह वास्तव में काम कर सकता है ... 'WebViewClient.shouldOverrideUrlLoading' को ओवरराइड करना' अपाचे DedfaultHttpClient' का उपयोग कुकीज़ का उपयोग करके वेबपृष्ठ प्राप्त करने के लिए और वेबदृश्य में HTML को वेबव्यू में इंजेक्ट करने के लिए करें।loadData' (यानी, आप सभी तर्क और वेबव्यू को केवल एचटीएमएल प्रदर्शित करने/प्रतिपादित करने के लिए उपयोग करते हैं) –

+0

आपका लिंक मर चुका है – Beuj

+0

@ बेज ने एक और –

4

में और अधिक हाल ही में मैंने एक ही समस्या थी मैंने पाया जो मेरी गलती थी। समस्या यह थी कि मैंने डोमेन सेट किया था (लेकिन यह एपीआई 15 तक काम करता था)। डोमेन को "company.com" के बजाय डॉट: ".company.com" के साथ डोमेन को उपसर्ग करने का प्रयास करें।

+1

पाया, यह काम किया, लेकिन मैंने पाया कि यह विपरीत में एक ही समस्या का कारण बन गया - यह ' आईसीएस में डी काम, और पूर्व-आईसीएस नहीं। अगर मैं आइस क्रीम सैंडविच पर चल रहा था, और "डोमेन.com" नहीं तो मुझे ".domain.com" का उपयोग करने के लिए जल्दी करना होगा। अजीब। – Mike

+1

विभिन्न तरीकों से बहुत कोशिश करने के बाद, अंत में डोमेन कुकी मैनेजर.सेटक्यूकी ("।" + डोमेन, कुकी) से पहले एक बिंदु जोड़कर मेरे लिए काम किया; – Ashok

+0

डोमेन चर में क्या होता है? – Skynet

0

मैं क्लाइंट से कुकी इंजेक्शन नहीं दे रहा था, लेकिन मुझे आईसीएस कुकी नहीं बचाई गई।

कुकीज़ के बजाय स्थानीय संग्रहण का उपयोग करने के लिए पर एक कार्य है। आपको कुकी सिंक प्रबंधक की आवश्यकता नहीं है। यह ics और v2 + एंड्रॉइड पर काम करता है।

मेरे मामले में मैं एक डोमेन नहीं था, इसलिए ऊपर नहीं मालूम था प्रासंगिक - मैं app की संपत्ति फ़ोल्डर में एक स्थानीय html फ़ाइल उपयोग कर रहा था।

इस ICS पर काम करता है और v2 एंड्रॉयड

का आनंद

जावा

// java 
WebSettings webSettings = myWebView.getSettings(); 
webSettings.setDomStorageEnabled(true); // localStorage 


// e.g., if your package is www.myapp.whatever; 
webSettings.setDatabasePath("/data/data/www.myapp.whatever/databases/"); 

एचटीएमएल

// javascript 

function createCookie(name,value,days,path) { 
    localStorage.setItem(name,value); 
} 

function readCookie(name) { 
    return localStorage.getItem(name); 
} 
0

यहाँ है आपका जवाब: In ICs, can`t get cookie

इसका डोमेन जो समस्या का कारण बन रहा है।

15+ के बाद सभी संस्करणों के लिए आपको डोमेन.com के बजाय ** ** ** डोमेन.com का उपयोग करना होगा।

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