के बीच डेटा की छोटी मात्रा साझा करना मेरे पास कुछ एप्लिकेशन हैं जो कुछ लॉगिन तर्क लागू करते हैं। अगर मान लें कि [email protected] पर एक एप्लिकेशन लॉग है, तो मैं चाहता हूं कि ये सभी एप्लिकेशन [email protected] पर लॉग इन हों। अगर मैं लॉगआउट करता हूं तो मैं सभी आवेदन करना चाहता हूं। लेकिन मैं तुरंत ऐसा नहीं करना चाहता हूं। एप्लिकेशन स्वयं इसे संभाल सकता है, लेकिन यह जानना आवश्यक है कि कुछ अन्य एप्लिकेशन पहले से लॉग इन है या नहीं और यदि हाँ इस ऐप के समान ईमेल पते के लिए लॉग इन करें। तो मुझे यह जानने की जरूरत है कि ईमेल पता क्या है जिसके लिए अन्य ऐप लॉग है। मुझे एक स्ट्रिंग स्टोर करने की ज़रूरत है।ऐप्स
सबसे पहले मैं SharedPreferences
के बारे में सोच रहा था, लेकिन यह एक बुरा विचार है क्योंकि अन्य विकल्प हैं (और स्टैक ओवरफ्लो प्रक्रियाओं के बीच साझा संदर्भों के खराब उदाहरण से भरा है)। इसके बावजूद मैंने कोशिश की। सभी ऐप्स पर sharedUserId
सेट करें, जिन्हें createPackageContext
कहा जाता है और अंत में वरीयता प्राप्त करने का प्रयास करें। लेकिन मैं इससे पढ़ नहीं सकता। हमेशा मैं शून्य हो गया, भले ही मैंने Context.Mode_WORLD_READABLE
का उपयोग किया - जो कि रास्ते से बहिष्कृत है।
ठीक है, सीखने के लिए सबक SharedPreferences
का उपयोग नहीं करता है (मुझे लगता है)। लेकिन अब मुझे जो भी चाहिए वह सिंगल स्ट्रिंग को कहीं भी स्टोर करना है जहां इसे मेरे अन्य ऐप्स द्वारा पढ़ा जा सकता है।
शायद मुझे ContentProvider
का उपयोग करना चाहिए? लेकिन गंभीरता से ... एक स्ट्रिंग के लिए? दूसरा विकल्प क्या है? मुझे यकीन है कि इतने सरल ऑपरेशन के लिए मुझे वास्तव में Service
या ContentProvider
की आवश्यकता नहीं है, लेकिन मुझे वास्तव में यह नहीं पता कि यह कैसे करना है।
+1 बहुत अच्छा सवाल है। आपने समझाया है कि आप क्या करना चाहते हैं। आपने यह भी दिखाया है कि आपने अपना खुद का समाधान ढूंढने के प्रयास में क्या विकल्प विचार किए हैं। –
मुझे किसी साझा फ़ाइल (यानी, नाजुक, असुरक्षित) या ContentProvider के अलावा ऐसा करने के किसी भी अच्छे तरीके से नहीं पता है। यह बेकार है कि 'साझा किए गए संदर्भ' ने साझा किए गए साझा किए गए हैं, लेकिन शायद एक दिन ... – Simon