2012-01-24 17 views
6

मैं कस्टम योजना-> intent_filter तकनीक के साथ सर्वव्यापी कॉलबैक का उपयोग करके OAuth प्रमाणीकरण के लिए एक विशिष्ट व्यवहार प्राप्त करने के लिए संघर्ष कर रहा हूं।ब्राउज़र कॉलबैक और एंड्रॉइड गतिविधि स्टैक पागलपन

मेरा ऐप SEND कार्यों के लिए पंजीकरण करता है और, जब कॉल किया जाता है, तो एक सेवा शुरू होती है, जो बदले में जांचती है कि उपयोगकर्ता पहले ही अधिकृत है और यदि नहीं, तो लॉगिन का अनुरोध करने के लिए एक गतिविधि (OAuthActivity) उत्पन्न करता है।

ध्यान रखें कि इससे पहले की अग्रभूमि गतिविधि कुछ भी हो सकती है। गतिविधि तब ब्राउजर में ऑथ पेज खोलने के लिए एक दृश्य उद्देश्य शुरू करती है; उत्तरार्द्ध तैयार किए गए कॉलबैक (प्रकट में परिभाषित कस्टम योजना के साथ) का आह्वान करता है और OAuthActivity जागता है।

ओएथएक्टिविटी, वर्तमान में launchMode="singleTask" है, लेकिन यह स्टैक परिप्रेक्ष्य से कोई फर्क नहीं पड़ता है (यह वापस कॉल करते समय शीर्ष पर आता है)।

क्या कोई तरीका है कि मैं गतिविधि स्टैक को साफ़ कर सकता हूं और उपयोगकर्ता क्या कर रहा था उस पर वापस आ सकता हूं और उसे ब्राउज़र गतिविधि पर 'वापस' धक्का नहीं देता है? (फिर पृष्ठभूमि में सामग्री सफलतापूर्वक सबमिट की गई थी जब मैं एक अधिसूचना दिखाऊंगा)

क्या किसी के पास कोई पॉइंटर्स है? के माध्यम से

+0

उह यह मेरा प्रश्न भी है – CQM

उत्तर

1

गतिविधि पढ़ने के लिए धन्यवाद फिर ब्राउज़र

समस्या है कि में अधिकार का पृष्ठ खोलने के लिए एक दृश्य के इरादे शुरू होता है। यह मेरे लिए काम करता है: ओथ वेब पेज को उस वेबव्यू में प्रस्तुत करें जिसे आप ब्राउजर ऐप पर लॉन्च करने के बजाए नियंत्रित करते हैं।

ओथ वेब पेज, जब यह कॉलबैक कहता है, वास्तव में वेबव्यू में खुद को बदल देगा, जहां आपका वेब व्यू क्लाइंट उस अपेक्षित यूआरएल को पकड़ सकता है, परिणामों को संसाधित कर सकता है, और वेबव्यू खत्म कर सकता है (गतिविधि स्टैक से इसे हटा रहा है))।

+0

वास्तव में यह काम करता है और यह बाजार पर अधिकांश (सभी?) ऐप्स द्वारा उपयोग किया जाने वाला दृष्टिकोण है जिसे ब्राउज़र-आधारित प्रमाणीकरण की आवश्यकता होती है। हालांकि मैं ऐसे समाधान की तलाश में हूं जो ब्राउज़र ऐप को सीधे लेता है। मुझे लगता है कि यह वास्तव में करने योग्य नहीं है जब आप किसी गतिविधि पर वापस जाना चाहते हैं जो ब्राउज़र की तुलना में कार्य स्टैक में कम है (जो मेरा मामला है)। – Utaal

+0

जैसे ही आप लॉन्च करते हैं, आपके पास नियंत्रण नहीं होता है। आप Intent.FLAG_ACTIVITY_NO_HISTORY के इरादे पर ध्वज जोड़ने का प्रयास कर सकते हैं, लेकिन ब्राउजर नियंत्रण के बाद क्या होता है इसके लिए यह कोई गारंटी नहीं है। – larham1

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