2010-09-15 12 views
7

मैंने एंड्रॉइड में एक कुकी सहेजी है। अब मैं इसे अपने ब्राउज़र के इरादे में पास करना चाहता हूं। मेरे वर्तमान कोड को देखें:इरादे के माध्यम से ब्राउज़र पर कुकी पास करें

Intent browser = new Intent("android.intent.action.VIEW", 
          Uri.parse("http://mypage.php/memberpagethatrequireacookie.php")); 
//putExtra cannot take these arguments -> browser.putExtra("org.apache.http.cookie.Cookie", cookie); 
startActivity(browser); 

मैं इसे अपने ब्राउज़र में अस्थायी रूप से स्टोर करना चाहता हूं, इसलिए मेरा सदस्य पृष्ठ सफलतापूर्वक लोड हो जाता है। मेरी कुकी HTTP अनुरोध से सफलतापूर्वक बनाई गई है और मैं इसे List<Cookie> cookie; पर असाइन करता हूं मुझे बताएं कि मुझे कुछ और कोड प्रदान करना चाहिए या नहीं।

कोई विचार? अग्रिम में धन्यवाद!

उत्तर

11

ब्राउज़र में Intent अतिरिक्त दस्तावेज नहीं हैं, अकेले रहने दें जो आपको कुकी को इंजेक्ट करने की अनुमति देगा। और, ज़ाहिर है, उपयोगकर्ता एक अलग ब्राउज़र का उपयोग कर सकता है।

आपके आवेदन में WebView का उपयोग करने के लिए आपका स्वागत है, और आप अपनी कुकी को WebView के पर्यावरण में इंजेक्ट करने के लिए CookieManager का उपयोग कर सकते हैं।

मुझे लगता है कि मैं शीर्ष लेख जानकारी मैं पास करना चाहते हैं संग्रहीत एक मानचित्र वस्तु है:

+0

तो सामान्य ब्राउज़र के साथ ऐसा करना असंभव है? फिर, वेबव्यू विकल्प जाने का रास्ता है। – Curtain

+3

@ जुलिएयन असांज: मुझे नहीं पता कि यह "सामान्य ब्राउज़र" के साथ संभव है। और कुछ डिवाइस उस ब्राउज़र को प्रतिस्थापित करेंगे। और कुछ उपयोगकर्ता उस ब्राउज़र को प्रतिस्थापित करेंगे। उन सभी की बाधाएं 'इराद' अतिरिक्त के माध्यम से कुकीज़ स्वीकार करने के लिए एक गैर-दस्तावेज प्रोटोकॉल पर सहमत हैं, काफी कम हैं। – CommonsWare

+0

ओके धन्यवाद। एक और सवाल दिखाई दिया, लेकिन मैं इसे एक और सवाल में ले जाऊंगा। यह कुकी इंजेक्शन के बारे में है, जो काम नहीं करता है। – Curtain

5

यहाँ जवाब android.proveder.Browser उपयोग करता है। उसके बाद निम्न:

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
Bundle bundle = new Bundle(); 
if(mExtraHeader!=null){ 
for(String key: mExtraHeader.keySet()){ 
    bundle.putString(key, mExtraHeader.get(key)); 
} 
} 
i.putExtra(Browser.EXTRA_HEADERS, bundle); 
startActivity(i); 

उल्लेख अन्य पुरुष की तरह, यह केवल डिफ़ॉल्ट ब्राउज़र और अन्य ब्राउज़रों के साथ काम Browser.EXTRA_HEADERS मुझे लगता है की जरूरत नहीं होगी। संसाधन: http://gitorious.org/rowboat/packages-apps-browser/blobs/a563d09392905140893d7a017dd63721577e1953/src/com/android/browser/BrowserActivity.java

+0

धन्यवाद, उपयोगकर्ता। :) – Curtain

0

उपरोक्त कोड हेडर सेट करने के लिए ठीक काम कर रहा है (इसके लिए धन्यवाद), लेकिन मैं इस तरह से कुकीज़ सेट करने में सक्षम नहीं था। मुझे संदेह है कि यदि वेब ब्राउज़र में लक्ष्य URL के लिए पहले से ही कुकीज़ संग्रहीत हैं, तो यह EXTRA_HEADERS का उपयोग करके बनाई गई कुकीज़ को ओवरराइट कर देगी।

+1

आपने हेडर "सेट-कुकी:" का उपयोग करने का प्रयास किया है, तो मुझे कल्पना है? –

+0

"सेट-कुकी" एक HTTP उत्तर शीर्षलेख है। हम HTTP अनुरोध "कुकी" हेडर के बारे में यहां बात कर रहे हैं। – claudius

+0

तब "कुकी" शीर्षलेख ... http://en.wikipedia.org/wiki/List_of_HTTP_header_fields –

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