2013-10-05 9 views
6

के बीच डेटा की छोटी मात्रा साझा करना मेरे पास कुछ एप्लिकेशन हैं जो कुछ लॉगिन तर्क लागू करते हैं। अगर मान लें कि [email protected] पर एक एप्लिकेशन लॉग है, तो मैं चाहता हूं कि ये सभी एप्लिकेशन [email protected] पर लॉग इन हों। अगर मैं लॉगआउट करता हूं तो मैं सभी आवेदन करना चाहता हूं। लेकिन मैं तुरंत ऐसा नहीं करना चाहता हूं। एप्लिकेशन स्वयं इसे संभाल सकता है, लेकिन यह जानना आवश्यक है कि कुछ अन्य एप्लिकेशन पहले से लॉग इन है या नहीं और यदि हाँ इस ऐप के समान ईमेल पते के लिए लॉग इन करें। तो मुझे यह जानने की जरूरत है कि ईमेल पता क्या है जिसके लिए अन्य ऐप लॉग है। मुझे एक स्ट्रिंग स्टोर करने की ज़रूरत है।ऐप्स

सबसे पहले मैं SharedPreferences के बारे में सोच रहा था, लेकिन यह एक बुरा विचार है क्योंकि अन्य विकल्प हैं (और स्टैक ओवरफ्लो प्रक्रियाओं के बीच साझा संदर्भों के खराब उदाहरण से भरा है)। इसके बावजूद मैंने कोशिश की। सभी ऐप्स पर sharedUserId सेट करें, जिन्हें createPackageContext कहा जाता है और अंत में वरीयता प्राप्त करने का प्रयास करें। लेकिन मैं इससे पढ़ नहीं सकता। हमेशा मैं शून्य हो गया, भले ही मैंने Context.Mode_WORLD_READABLE का उपयोग किया - जो कि रास्ते से बहिष्कृत है।

ठीक है, सीखने के लिए सबक SharedPreferences का उपयोग नहीं करता है (मुझे लगता है)। लेकिन अब मुझे जो भी चाहिए वह सिंगल स्ट्रिंग को कहीं भी स्टोर करना है जहां इसे मेरे अन्य ऐप्स द्वारा पढ़ा जा सकता है।

शायद मुझे ContentProvider का उपयोग करना चाहिए? लेकिन गंभीरता से ... एक स्ट्रिंग के लिए? दूसरा विकल्प क्या है? मुझे यकीन है कि इतने सरल ऑपरेशन के लिए मुझे वास्तव में Service या ContentProvider की आवश्यकता नहीं है, लेकिन मुझे वास्तव में यह नहीं पता कि यह कैसे करना है।

+0

+1 बहुत अच्छा सवाल है। आपने समझाया है कि आप क्या करना चाहते हैं। आपने यह भी दिखाया है कि आपने अपना खुद का समाधान ढूंढने के प्रयास में क्या विकल्प विचार किए हैं। –

+0

मुझे किसी साझा फ़ाइल (यानी, नाजुक, असुरक्षित) या ContentProvider के अलावा ऐसा करने के किसी भी अच्छे तरीके से नहीं पता है। यह बेकार है कि 'साझा किए गए संदर्भ' ने साझा किए गए साझा किए गए हैं, लेकिन शायद एक दिन ... – Simon

उत्तर

0

आप एक प्रसारण रिसीवर का उपयोग कर सकते हैं। जब आपको एप्लिकेशन ए में डेटा बदलता है तो आपको बस आवेदन करना होगा। फिर एप्लिकेशन बी पृष्ठभूमि में डेटा को संभाल सकता है, और इसे स्टोर करने की आवश्यकता है, हालांकि आपको इसकी आवश्यकता है। यह मारने के लिए थोड़ा सा हो सकता है, और ऐसा करने का एक बेहतर तरीका हो सकता है, लेकिन यह काम करेगा।

+0

लेकिन मुझे यकीन नहीं है कि सभी एप्लिकेशन चल रहे हैं या नहीं। ब्रॉडकास्ट उन अनुप्रयोगों को वितरित नहीं किया जाता है जो उपयोगकर्ता द्वारा सेटिंग्स से बंद या बंद कर दिए जाते हैं। – sennin

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