क्या यह वास्तव में आवश्यक है? (इसके बिना ठीक लगता है)।
नहीं, यह नहीं आवश्यक है एक पूरी तरह से स्टैंड-अलोन अनुप्रयोग के लिए लेकिन फिर भी अच्छा अभ्यास माना जा सकता है।
यह उन ऐप्स में अधिक महत्वपूर्ण है जो सार्वजनिक रूप से उपलब्ध हैं ताकि वे बातचीत कर सकें लेकिन विशिष्ट रूप से पहचानने वाले डेटा और डेटा का आदान-प्रदान करने का कोई तरीका बनाए रख सकें। जिसके लिए पैकेज नाम का उपयोग किया जाता है, संदर्भ पर निर्भर करेगा।
एक सार उदाहरण के लिए ...
कंपनी एक एक ऐप्लिकेशन जो जो कंपनी बी और कंपनी सी द्वारा निर्मित ऐप्स का उपयोग कर सकते डाटा प्रोसेसिंग के कुछ प्रकार प्रदान कर सकते हैं पैदा करता है। इरादे के लिए 'कार्रवाई' को कंपनी ए के लिए प्रासंगिक नाम दिया जाएगा, लेकिन दो 'क्लाइंट' ऐप्स द्वारा पारित डेटा क्लाइंट ऐप्स कंपनियों के लिए प्रासंगिक होगा। उदाहरण ...
अप्पा के डॉक्स ...
To request data processing use:
com.companyA.intent.action.PROCESS_DATA
Pass data with the above intent as an extra named:
<your package name>.SOME_DATA
अब जब अप्पा के प्रासंगिक घटक ऊपर के साथ कहा जाता है, यह एक नाम जो .SOME_DATA साथ समाप्त होता है के साथ है कि एक 'अतिरिक्त' की जाँच करेगा लेकिन यह अद्वितीय उपसर्ग के कारण अन्य ऐप्स द्वारा प्रदान किए गए अन्य डेटा से अलग डेटा को बनाए रखने में भी सक्षम होगा। तो ...
कंपनी बी कोड
Intent i = new Intent(com.companyA.intent.action.PROCESS_DATA);
i.putExtra(com.companyB.SomeApp.SOME_DATA, data);
कंपनी सी कोड
Intent i = new Intent(com.companyA.intent.action.PROCESS_DATA);
i.putExtra(com.companyC.SomeOtherApp.SOME_DATA, data);
ठीक है, संभवतः मेरी बेहतर उदाहरणों में से एक नहीं है, लेकिन क्या यह यह महत्वपूर्ण है है करने के लिए नीचे आता है कैसे को देखने के लिए एंड्रॉइड पर्यावरण एक दूसरे का उपयोग करने, डेटा पास करने और उस डेटा के स्रोत के लिए विशिष्ट रूप से पहचाने जाने योग्य विभिन्न अनुप्रयोग घटकों के बारे में बहुत कुछ है।
धन्यवाद, यह एक बहुत साफ करता है कि अप। एक छोटा सा बिंदु है जो मुझे आपके उदाहरण में नहीं मिलता है। - क्या यह माना जाता है कि "com.companyB.SomeApp.SOME_DATA" कोई विशेष प्रकार है (उदा। स्ट्रिंग)? मुझे लगता है कि यह एक स्ट्रिंग है और कंपनी ए के कोड को पहले 'डॉट' समेत सभी चीजों को ट्रिम करना है? यदि ऐसा है, तो इसे कंपनी ए, बी और सी (स्पष्ट रूप से) द्वारा 'समझ' जाना होगा। – steve
@steve: putExtra फॉर्म का उपयोग करता है (स्ट्रिंग नाम, मान) जहां 'नाम' दोनों पक्षों पर समझा जाना चाहिए - 'मान' अलग-अलग प्रकार (int, string और so) हो सकता है। मेरा उदाहरण इस बात पर आधारित था कि ऐप्स प्रसारण के बजाए सीधे संवाद कैसे कर सकता है (जैसे "मेरे पास एक छवि फ़ाइल है, जो जानता है कि इसे कैसे खोलें?" इरादा का प्रकार)। अपने स्वयं के अनुप्रयोग घटकों के बीच डेटा पास करने का मतलब है कि उन्हें यह जानने की ज़रूरत है कि 'अतिरिक्त' का अर्थ क्या है, लेकिन डेवलपर्स के लिए हमेशा ऐसे ऐप्स बनाने की संभावना है जो अन्य डेवलपर प्रकाशित दस्तावेज़ों के आधार पर उपयोग कर सकते हैं –
Squonk
धन्यवाद @MisterSquonk, मैं समझता हूं। मुझे लगता है कि इस तरह की चीज के लिए एक अच्छा पैटर्न हमेशा 'एक्स्ट्रा' में पूरी तरह से योग्य 'नाम' के साथ एक बंडल पारित करना होगा। फिर, बंडल में अलग-अलग मूल्यों के छोटे नाम हो सकते हैं क्योंकि यह स्पष्ट होगा कि कॉलर बंडल के नाम पर आधारित था। यह पार्स करना और कोड में भी पढ़ना आसान होगा। बेशक आप डेटा के हर टुकड़े को अर्हता प्राप्त कर सकते हैं लेकिन यह मेरे लिए बहुत अधिक लगता है ... धन्यवाद फिर से (और अन्य टिप्पणीकारों के लिए भी धन्यवाद) – steve