शुरुआती भाग -4 के लिए एंड्रॉइड ट्यूटोरियल: सामग्री प्रदाता



यह Android ट्यूटोरियल सामग्री प्रदाता अवधारणाओं पर चर्चा करता है। यह एंड्रॉइड का एक महत्वपूर्ण बिल्डिंग ब्लॉक है, जो एंड्रॉइड सिस्टम में डेटा इंटरचेंज की सुविधा देता है।

शुरुआती लोगों के लिए हमारे पिछले Android ट्यूटोरियल में, हमने Android के पहले तीन बिल्डिंग ब्लॉक्स पर चर्चा की: गतिविधि , आशय तथा सेवाएँ । यह आलेख शुरुआती लोगों के लिए एंड्रॉइड ट्यूटोरियल की इस श्रृंखला में चौथा है और सामग्री प्रदाता पर चर्चा करता है, जो एंड्रॉइड सिस्टम का एक और बहुत महत्वपूर्ण घटक है।

सामग्री प्रदाता आपके एंड्रॉइड सिस्टम का बिचौलिया है, जो विभिन्न एंड्रॉइड अनुप्रयोगों के बीच डेटा इंटरचेंज की सुविधा देता है। आइए हम इस Android ट्यूटोरियल में इसके बारे में विस्तार से जानकारी प्राप्त करें।





शुरुआती -4 बोनस के लिए Android ट्यूटोरियल: यहां कंटेंट प्रोवाइडर कोड डाउनलोड करें । ट्यूटोरियल के माध्यम से जाने के बाद आप इस कोड को चाहते हैं! :)

[dl url = '#' class = 'eModal eModal-6 = शीर्षक =' डाउनलोड कोड 'desc =' 'type =' 'align =' 'for =' download ']



Android ट्यूटोरियल: सामग्री प्रदाता

सामग्री प्रदाता विभिन्न अनुप्रयोगों में डेटा साझाकरण और डेटा हेरफेर की अनुमति देने के लिए एक केंद्रीय डेटा स्टोर या गोदाम तक पहुंच की सुविधा देता है।

एंड्रॉइड सिस्टम के एपीआई में डिफ़ॉल्ट सामग्री प्रदाताओं के कुछ उदाहरण यहां दिए गए हैं:

एंड्रॉइड ट्यूटोरियल: एंड्रॉइड सिस्टम में डिफ़ॉल्ट सामग्री प्रदाता



ये सामग्री प्रदाता एक अंतर्निहित डेटाबेस से उपयोगकर्ता को हटाने की अनुमति देते हैं। आमतौर पर, सामग्री प्रदाता अंतर्निहित डेटाबेस को संग्रहीत करने के लिए SQLite का उपयोग करते हैं।

आइए हम अच्छे पुराने फेसबुक एप्लिकेशन के कभी-उपयोगी उदाहरण लें, जिसने हमें पिछले एंड्रॉइड ट्यूटोरियल में चीजों को सरल बनाने में मदद की है!

आप सभी ने अपने सोशल नेटवर्किंग जीवन के किसी न किसी मोड़ पर, अपनी फेसबुक टाइमलाइन पर एक तस्वीर अपलोड की है, ठीक है! आप इसे कैसे करते हैं?

दीवार पर फोटो बटन पर क्लिक करने पर, आप फोटो गैलरी में पहुंच जाते हैं। वहां से आप फोटो अपलोड करने के लिए चुन सकते हैं।

के पिछले लेखों को पढ़कर Android ट्यूटोरियल श्रृंखला , आप गतिविधियों और इरादों के बारे में जानते हैं इसलिए, आप जानते हैं कि ऐसा होता है:

आपकी फेसबुक वॉल एक 'सक्रियता' है। जैसे ही आप फोटो बटन पर क्लिक करते हैं, एक “INTENT” पास हो जाता है, जो संदेश पहुंचाता है और “CONTENT PROVIDER” (फोटो गैलरी) खुल जाता है। फोटो एक नेटवर्क अपलोड 'सेवा' का उपयोग करके अपलोड किया गया है।

कंटेंट प्रोवाइडर आपके फेसबुक एप्लीकेशन के अंदर कैसे काम करता है, यह जानने के लिए यह लाइव वीडियो देखें।

Android सिस्टम को सामग्री प्रदाताओं की आवश्यकता क्यों है?

सामग्री प्रदाताओं की आवश्यकता इसलिए उत्पन्न होती है क्योंकि एक अनुप्रयोग में बनाया गया डेटाबेस दूसरे अनुप्रयोग के लिए दिखाई नहीं देता है।

SQLite का उपयोग करके विभिन्न अनुप्रयोगों में डेटाबेस बनाना और संग्रहीत करना सरल है, हालांकि समस्या यह है, एंड्रॉइड में एक डेटाबेस उस एप्लिकेशन के लिए निजी है जो इसे बनाता है । एंड्रॉइड में कोई भी सामान्य स्टोरेज एरिया नहीं है जिसे हर एप्लिकेशन एक्सेस कर सके। इसलिए, डेटाबेस का उपयोग करने के लिए विभिन्न अनुप्रयोगों के लिए, एंड्रॉइड सिस्टम को एक इंटरफ़ेस की आवश्यकता होती है जो इस तरह के अंतर-एप्लिकेशन और अंतर-प्रक्रिया डेटा विनिमय की अनुमति देता है। यह वह जगह है जहाँ सामग्री प्रदाता खेलने के लिए आता है।

क्या मुझे वास्तव में एक सामग्री प्रदाता की आवश्यकता है?

1) आप यदि आप एक निजी डेटाबेस चाहते हैं तो अपने स्वयं के प्रदाता को विकसित करने की आवश्यकता नहीं है किसी विशेष अनुप्रयोग के लिए (यह डेटाबेस इसे बनाने वाले के अलावा अन्य अनुप्रयोगों के लिए सुलभ नहीं होगा)।

विधि ओवरलोडिंग और जावा में ओवरराइडिंग विधि

2) लेकिन आप कस्टम खोज सुझाव प्रदान करने के लिए एक कस्टम प्रदाता की आवश्यकता है अपने खुद के आवेदन प्रणाली में।

3) आपको एक कंटेंट प्रोवाइडर की भी आवश्यकता होगी अपने एप्लिकेशन से अन्य एप्लिकेशन में जटिल डेटा कॉपी और पेस्ट करें।

सामग्री प्रदाता द्वारा समर्थित संचालन क्या हैं?

सामग्री प्रदाता निम्नलिखित बुनियादी कार्यों का समर्थन करते हैं:

एक) क्वेरी: निर्दिष्ट URI के आधार पर सभी ऑब्जेक्ट्स के लिए सामग्री प्रदाता को क्वेरी करता है।

2) हटाएं: किसी सामग्री प्रदाता के डेटाबेस से निर्दिष्ट वस्तुओं को हटाता है।

3) अपडेट करें: डेटाबेस में वस्तुओं को अद्यतन करता है।

4) सम्मिलित करें: डेटाबेस में नई ऑब्जेक्ट सम्मिलित करता है।

सामग्री प्रदाता में एक ऑपरेशन करने के लिए कदम

चरण 1: एक सामग्री प्रदाता तक पहुंचना

ContentResolver क्लाइंट ऑब्जेक्ट सामग्री प्रदाता से डेटा तक पहुंचने के लिए उपयोग किया जाता है। यह प्रदाता ऑब्जेक्ट के साथ संचार करता है, जो बदले में डेटा तक पहुंचने के अनुरोध को स्वीकार करता है और वांछित परिणाम देता है। प्रदाता और प्रदाता क्लाइंट ऑब्जेक्ट द्वारा प्रदान किया गया डेटा विनिमय इंटरफ़ेस विभिन्न प्रक्रियाओं / अनुप्रयोगों में संचार की अनुमति देता है।

डेटाबेस तक पहुँचने के लिए आवश्यक एप्लिकेशन को यह घोषित करना होगा और अपनी घोषणा फ़ाइल में अनुमति का अनुरोध करना होगा। हमारे बाद के एंड्रॉइड ट्यूटोरियल में इस पर विस्तार से चर्चा की जाएगी।

sql और pl sql ट्यूटोरियल

सामग्री यू.आर.आई.

सामग्री यूआरआई एक प्रदाता में डेटा की पहचान करने के लिए उपयोग किए जाने वाले तर्कों में से एक है। इसके चार भाग हैं:

एक) योजना: सामग्री प्रदाता के लिए योजना का एक निरंतर मूल्य है: 'सामग्री'।

2) प्राधिकरण: यह प्रदाता का प्रतीकात्मक नाम है, और प्रत्येक के लिए अद्वितीय है। यह है कि हम कितने की एक सूची से वांछित सामग्री प्रदाता बाहर एकल।

3) पथ: पथ पूर्ण डेटाबेस से आवश्यक डेटा को अलग करने में मदद करता है । उदाहरण के लिए, कॉल लॉग कंटेंट प्रोवाइडर विभिन्न रास्तों का उपयोग करते हुए मिस्ड कॉल, प्राप्त कॉल आदि के बीच अंतर करता है।

4) आईडी: यह एक अनिवार्य घटक नहीं है, और यूआरआई में मौजूद नहीं हो सकता है लेकिन यदि मौजूद है, तो यह संख्यात्मक होना चाहिए। उदाहरण के लिए, यदि आप अपने मीडिया सामग्री प्रदाता से एक विशिष्ट संगीत फ़ाइल का उपयोग करना चाहते हैं, तो आप एक आईडी भी निर्दिष्ट करेंगे

प्रक्रिया

प्रदाता प्राधिकरण का उपयोग करके, ContentResolver सही सामग्री प्रदाता की पहचान करता है (जैसा कि प्रत्येक सामग्री प्रदाता के लिए प्राधिकरण अद्वितीय है)। ऐसा करने के बाद, URI का पथ घटक सही (अनुरोधित) डेटा तालिका का चयन करने के लिए उपयोग किया जाता है। यदि कोई आईडी मौजूद है, तो प्रदाता को पता होगा कि सटीक डेटा का अनुरोध किया जा रहा है।

URI दो प्रकार के होते हैं:

इसके अतिरिक्त, यूआरआई के पास सीमित जानकारी भी हो सकती है।

चरण 2: सामग्री प्रदाता से डेटा कैसे प्राप्त करें

भले ही ContentResolver के पास अब डेटा टेबल तक पहुंच हो, लेकिन जब तक एप्लिकेशन के पास यह आवश्यक डेटा नहीं होगा 'पहुंच की अनुमति पढ़ें' उस विशेष प्रदाता के लिए। यह अनुमति प्रत्येक सामग्री प्रदाता की प्रकट फ़ाइल में परिभाषित की गई है।

वह सब एक आवेदन (जो इस डेटाबेस को एक्सेस करना चाहता है) इस अनुमति का अनुरोध करना है।

अब जैसा कि पहले इस एंड्रॉइड ट्यूटोरियल में चर्चा की गई थी, एक सामग्री प्रदाता का उपयोग करके चार ऑपरेशन किए जा सकते हैं । हम एक-एक करके सभी के ऊपर जाएंगे।

क्वेरिंग

अब, आपने प्रदाता को एक्सेस कर लिया है, और इससे डेटा पुनः प्राप्त करने की अनुमति है। अगला कदम है प्रदाता से आवश्यक कार्रवाई का अनुरोध करने के लिए क्वेरी का निर्माण करें

क्वेरी करते समय यहां दिए गए तर्क दिए गए हैं:

एक) घृणा : यह ठीक वैसे ही काम करता है जैसा ऊपर बताया गया है।

2) प्रोजेक्शन: क्वेरी चाहिए संपूर्ण डेटाबेस तालिका से कॉलम का एक सेट लौटाएं । इसे प्रक्षेपण के रूप में जाना जाता है। पासिंग नल सभी स्तंभों को लौटाएगा, जो अक्षम है।

3) चयन क्लॉज: सेवा मेरे फ़िल्टर घोषित करें कि कौन सी पंक्तियों को वापस करना है , SQL WHERE क्लॉज (WHERE को छोड़कर) के रूप में स्वरूपित किया गया। पासिंग नल दिए गए URI के लिए सभी पंक्तियों को वापस कर देगा।

उदाहरण के लिए, यदि आप अपनी पता पुस्तिका के खोज कॉलम में एक वर्णमाला () P ’) कहते हैं, तो यह‘ P ’से शुरू होने वाले सभी संपर्क विवरणों को वापस कर देगा। हालाँकि, यदि आप खोज बार में कुछ भी दर्ज नहीं करते हैं, तो संपर्कों की पूरी सूची पुनः प्राप्त कर ली जाती है (ऐसे मामलों में चयन खंड in शून्य ’पर सेट है)।

4) चयन तर्क: आप चयन में 's' शामिल कर सकते हैं, जो चयन में उन मूल्यों से प्रतिस्थापित किया जाएगा, जो चयन में दिखाई देते हैं।

5) क्रमबद्ध करेन का आदेश: एसक्यूएल आदेश को क्लॉज द्वारा (स्वयं द्वारा आदेश को छोड़कर)। अशक्त पासिंग परिणाम प्राप्त करेंगे जो कि अनियंत्रित हो सकते हैं।

कोडिंग के लिए कोड परीक्षा:

  • संपर्क में फोन नंबरों की खोज करना
कर्सर कर्सर = contentresolver.query (ContactsContract.Contacts.Content_URI, null, null, null, null) int काउंट = कर्सर.getCount () यदि (गिनती> 0) {स्ट्रिंग से संपर्क करें () (कर्सर.moveToNext ()) { स्ट्रिंग columnId = ContactsContract.Contacts._ID int कर्सरइंडेक्स = कर्सर.getColumnIndex (columnId) स्ट्रिंग आईडी = कर्सर.getString (कर्सरइंडेक्स) स्ट्रिंग का नाम - कर्सर .getString (कर्सर .getColumnIndex (ContactsContract.Contact.DontPLs.DISPL)। (कर्सर.getString (कर्सर .getColumnIndex (ContactsContract.Contacts.HAS_PHONE_NUMBER)) यदि (संख्या) 0) {Cursor phoneCursor = contentresolver.query (ContactsContract.CommonDataKinds.Phone.Content_URI। nulla)। , नया स्ट्रिंग [] {id}, null) जबकि (phoneCursor.moveToNext ()) {String phoneNo = phoneCursor.getString (phoneCursor .getColumnIndex (ContactsContract.CommonDataKinds। Phone.NUMBER)) contactDetails + = 'Name' = नाम। ', फोन नं:' + phoneNo + ''} phoneCursor.close ()}}

निरीक्षण

मान लें कि आप अपनी पता पुस्तिका में नए संपर्क सम्मिलित करना चाहते हैं। ContentValues ​​ऑब्जेक्ट इन सम्मिलन को करने के लिए उपयोग किया जाता है। ContentValue ऑब्जेक्ट कुंजी और सामग्री प्रदाता कॉलम को इसे प्राप्त करने के लिए मेल खाना चाहिए। यहाँ इसके लिए एक उदाहरण दिया गया है:

प्रविष्टि के लिए कोड परीक्षण:

  • ऑपरेशन 'रजनीकांत' और नंबर '9988999888' के साथ नई प्रविष्टि सम्मिलित करना है
// ऑपरेशन ArrayList ops = new ArrayList () int rawContactInsertIndex = ops.size () ops.add (ContentProviderOperation.newInsert (RawContacts.conent_URI) .withValue (RawContacts.ACCOUNT_TYPE, null। Null।)। । ) ops.add (ContentProviderOperation.newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInfinIndex) .withValue (Data.MIMETYPE, Phone.Content_ITEM_ITEM_ITEM) , Phone.TYPE_MOBILE) .build ()) getContentResolver ()। applyBatch (ContactsContract.AUTHORITY, ops)

UPDATING

किसी सामग्री प्रदाता को अपडेट करने के लिए निम्नलिखित तर्कों का उपयोग किया जाता है:

एक) नफरत: कंटेंट प्रोवाइडर का यू.आर.आई.

2) सामग्री: इसमें ऐसे मान शामिल हैं जो मौजूदा डेटा को बदल देंगे।

3) चयन क्लॉज: यह अद्यतन करने के लिए विशिष्ट रिकॉर्ड का चयन करने में मदद कर सकता है

4) चयन तर्क: आप चयन में 's' शामिल कर सकते हैं, जो चयन में उन मूल्यों से प्रतिस्थापित किया जाएगा, जो चयन में दिखाई देते हैं।

एक बार फिर, ContentValues ​​ऑब्जेक्ट की कुंजियाँ सामग्री प्रदाता में कॉलम से मेल खाना चाहिए अन्यथा, अद्यतन नहीं होगा।

अपडेट के लिए कोड परीक्षा:

  • फ़ोन नंबर को अपडेट करना जहां नाम 'रजनीकांत' है
स्ट्रिंग कहाँ = कॉन्टेक्टकंट्रेक्ट.डाटा। डीआईएसपीएलएवाईओ + '=? 'स्ट्रिंग [] परम = नया स्ट्रिंग [] {'रजनीकांत'} एरियरिस्ट ऑप्स = नया एरियर लेलिस्ट () ओपसैड (ContentProviderOperation.newUpdate (ContactsCractract.Data.CONTENT_URI) .withSelection (जहां, params) के साथ। Phone.NUMBER, '9876543210') .build ()) getContentResolver ()। ApplyBatch (ContactsContract.AUTHORITY, ops)

DELETION

हटाए जाने वाले तर्कों का उपयोग सामग्री के तर्क के अपवाद के साथ अद्यतन के रूप में किया जाता है, जिसकी आवश्यकता नहीं है क्योंकि कोई प्रतिस्थापित मान नहीं होगा।

हटाने के लिए कोड विस्तार:

  • संपर्क हटाएं जहां नाम 'रजनीकांत' है
स्ट्रिंग कहाँ = कॉन्टेक्टकंट्रेक्ट.डाटा। डीआईएसपीएलएवाईओ + '=? 'स्ट्रिंग [] परम = नया स्ट्रिंग [] {'रजनीकांत'} एरेलेस्ट ऑप्स = नया एरियरलिस्ट () ओपेसड (ContentProviderOperation.newDelete (ContactsContont.RawContacts.CONTENT_URI) .withSelection (जहां, परमस) पुनर्निर्माण। ) .applyBatch (ContactsContract.AUTHORITY, ops)

सम्मिलित ऑपरेशन के मामले में, URI को निर्देशिका आधारित होना चाहिए। अन्य सभी मामलों में, यूआरआई आईडी आधारित या निर्देशिका आधारित हो सकते हैं।

हम आशा करते हैं शुरुआती के लिए एंड्रॉइड ट्यूटोरियल: भाग 5 यह समझना बहुत मुश्किल नहीं है! हम बाद के Android ट्यूटोरियल में सामग्री प्रदाताओं के बारे में अधिक चर्चा करेंगे। तब तक मूल बातें सीखने का आनंद लें!

कृत्रिम बुद्धिमत्ता में नवीनतम तकनीक

क्या आपको इस एंड्रॉइड ट्यूटोरियल में कोई संदेह है? हमसे पूछें।

हैप्पी लर्निंग!

इस Android ट्यूटोरियल को बनाने में निम्नलिखित संसाधनों का उपयोग किया गया था! आधिकारिक Android डेवलपर्स , Edureka.in

आप इन संबंधित पोस्ट को भी पसंद कर सकते हैं: