2014-06-12 10 views
9

सामग्री प्रदाता अधिकारियों का कारण क्या है?एंड्रॉइड सामग्री प्रदाता प्राधिकरण

मैनिफेस्ट में उन्हें घोषित करने के अलावा मैं उन्हें क्यों/क्यों उपयोग करना चाहता हूं?

मैंने इस प्रश्न पर अपना होमवर्क करने की कोशिश की है और इस विषय पर एक सभ्य, एकजुट चर्चा नहीं मिल सकती है। यहाँ (मैं खुद Android विकास पर चार पुस्तकों के लिए पर additi में) सबसे अच्छा मैं मिल सकता है:

  1. https://stackoverflow.com/search?q=content+provider+authority
  2. Content Providers, Authority and and URI matching
  3. Get a list of available Content Providers
  4. http://developer.android.com/guide/topics/manifest/provider-element.html
  5. http://developer.android.com/guide/topics/providers/content-provider-creating.html
+1

इसका उपयोग विशेष प्रदाता ई की पहचान करने के लिए किया जाता है। जी। सामग्री: //your.authority – pskink

उत्तर

15

प्राधिकरण का उपयोग डब्ल्यू से बातचीत करने के लिए किया जाता है एक विशेष सामग्री प्रदाता के साथ, इसका मतलब है कि यह अद्वितीय होना चाहिए। यही कारण है कि good practice इसे अपने डोमेन नाम (रिवर्स में) के रूप में घोषित करने के लिए प्रदाता युक्त पैकेज का नाम है, इस तरह से कम डेवलपर एक ही प्राधिकारी घोषित करने वाले सामग्री प्रदाता के साथ एक ऐप बनाता है।

content://authority-name/data-in-the-provider 

यह में डोमेन के लिए इसी तरह काम करता है:

आप प्रकट में यह घोषणा इसलिए यदि आपका एप्लिकेशन और अन्य एप्लिकेशन (यदि आप उन्हें है) एक uri के रूप में अपनी सामग्री प्रदाता के माध्यम से डेटा में हेरफेर कर सकते हैं http यूआरएल:

http://domain-name/data-in-the-site 
+0

तो क्या इसका मतलब यह है कि यदि मेरे ऐप में एकाधिक प्रदाता हैं तो प्रत्येक को अपने पैकेज में होना चाहिए? –

+0

अधिकारियों को प्रत्येक सामग्री प्रदाता – ILovemyPoncho

+0

के लिए अद्वितीय होना चाहिए, ब्लै ब्लै कोड के किसी भी समूह के बिना सरल और अभी तक शक्तिशाली स्पष्टीकरण। – Nirmal

1

मैं भी स्पष्टीकरण रहा हूँ और ILovemyPoncho द्वारा प्रदान की जवाब देने के लिए जोड़ने के लिए, मैं इस विशेष answer मारा और मैं बोली:

+०१२३५१६४१०६१

और एंड्रॉइड वास्तव में क्या है: अधिकारी पूछ रहे हैं?

आपके प्रदाता के लिए एक प्रणाली व्यापक अद्वितीय पहचानकर्ता। या दुनिया भर में बेहतर अद्वितीय। सभी प्रदाता सिस्टम के साथ पंजीकृत हैं और उन्हें अद्वितीय होना चाहिए या दूसरा ऐप जो एक ही नाम का उपयोग करना चाहता है स्थापित नहीं हो सकता है। (: + "Your.authoritiy.string" "// सामग्री")

आप

उरी uri = Uri.parse की तरह एक उरी के माध्यम से अपने प्रदाता के साथ संवाद करने के लिए अंत में कि स्ट्रिंग का उपयोग

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

उदाहरण के लिए:

Uri uri = mContext.getContentResolver().insert(NotifireContentProvider2.NOTE_URI, values); 

मूल रूप से, आप Android ओएस के लिए यहाँ क्या कह रहे हैं अधिकार आप एक्सएमएल में परिभाषित किया है जिसमें यूआरआई दिया डालने डेटा है। ओएस इस विशेष सामग्री प्रदाता की खोज करेगा और अनुरोध भेज देगा।ContentProvider पर आपको insert विधि कहा जाएगा और आपको इसके अनुसार इसे संभालने के लिए यूआरआई से मेल खाना चाहिए।

इसके अलावा, यदि आप सामग्री प्रदाता हैं तो इतना सरल है कि दूसरों के समान अधिकार भी है। मैंने उन दो समस्याओं का सामना नहीं किया है जो मैंने उल्लेख किया है लेकिन मुझे लगता है कि यह सुखद नहीं होगा।

प्राधिकरण यह सुनिश्चित करने के लिए है कि ओएस समझता है कि कौन सा प्रदाता अनुरोध करने वाले ऐप को डेटा प्रदान करेगा और यह सुनिश्चित करने के लिए कि प्रदाता इसे प्रदान कर रहा है।

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