- सिंटैक्स:
-
<provider android:authorities="list" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:grantUriPermissions=["true" | "false"] android:icon="drawable resource" android:initOrder="integer" android:label="string resource" android:multiprocess=["true" | "false"] android:name="string" android:permission="string" android:process="string" android:readPermission="string" android:syncable=["true" | "false"] android:writePermission="string" > ... </provider>
- इसमें शामिल है:
-
<application>
- इसमें ये शामिल हो सकते हैं:
<meta-data>
<grant-uri-permission>
<intent-filter>
<path-permission>
- विवरण:
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
कॉन्टेंट देने वाले कॉम्पोनेंट का एलान करता है. कॉन्टेंट देने वाला,
ContentProvider
जो ऐसे डेटा का स्ट्रक्चर्ड ऐक्सेस देता है जिसे का इस्तेमाल करें. आपके ऐप्लिकेशन में मौजूद सभी कॉन्टेंट देने वालों को मेनिफ़ेस्ट फ़ाइल में<provider>
एलिमेंट होना चाहिए. ऐसा नहीं करने पर, सिस्टम को इनकी जानकारी नहीं होती और उन्हें नहीं चलाता है.सिर्फ़ उन कॉन्टेंट देने वालों के बारे में जानकारी दें जो आपके ऐप्लिकेशन का हिस्सा हैं. इनमें, कॉन्टेंट देने वालों के बारे में जानकारी न दें आपके ऐप्लिकेशन में इस्तेमाल किए जाते हैं.
Android सिस्टम, कॉन्टेंट देने वाली कंपनियों के रेफ़रंस सेव करता है. यह जानकारी, किसी संस्था या निकाय की ओर से दी जाती है स्ट्रिंग, जो प्रोवाइडर के कॉन्टेंट यूआरआई का हिस्सा होती है. उदाहरण के लिए, मान लें कि आपको किसी ऐसे कॉन्टेंट प्रोवाइडर को ऐक्सेस करना जो स्वास्थ्य सेवा से जुड़े पेशेवरों के बारे में जानकारी सेव करता हो. ऐसा करें तो उस तरीके को कॉल करें
ContentResolver.query()
, जो अन्य तर्कों के साथ एक यूआरआई लेता है, जो कंपनी की पहचान करता है:content://com.example.project.healthcareprovider/nurses/rn
content:
स्कीम यूआरआई की पहचान एक कॉन्टेंट यूआरआई के तौर पर करती है, जो एक Android कॉन्टेंट प्रोवाइडर. सर्टिफ़िकेट देने वाली संस्था या निकायcom.example.project.healthcareprovider
सेवा देने वाली कंपनी की पहचान करता है. कॉन्टेंट बनाने Android सिस्टम, सेवा देने वाली जानी-पहचानी कंपनियों और उनके अधिकारों की सूची में, सर्टिफ़िकेट देने वाली संस्था या निकाय का पता लगाता है. सबस्ट्रिंगnurses/rn
एक पाथ है, जिसका इस्तेमाल कॉन्टेंट देने वाला करता है का इस्तेमाल करें.<provider>
एलिमेंट में, सेवा देने वाली कंपनी के बारे में बताने परandroid:name
आर्ग्युमेंट में स्कीम या पाथ शामिल न करें, सिर्फ़ देने के लिए कहा जा सकता है.सामग्री देने वालों का इस्तेमाल करने और उन्हें डेवलप करने के बारे में जानकारी के लिए, देखें कॉन्टेंट देने वाले.
- विशेषताएं:
-
android:authorities
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
एक या इससे ज़्यादा यूआरआई संस्थाओं की सूची, जो कॉन्टेंट देने वाले से मिले डेटा की पहचान करती हैं.
एक से ज़्यादा अथॉरिटी के नाम की सूची बनाएं. इसके लिए, उनके नामों को सेमीकोलन से अलग करें.
विवादों से बचने के लिए, अथॉरिटी नामों,
जैसे कि
com.example.provider.cartoonprovider
. आम तौर पर, यह नाम है की,ContentProvider
सब-क्लास की मदद से बनाई गई है जो प्रोवाइडर को लागू करती हैकोई डिफ़ॉल्ट सेटिंग नहीं है. कम से कम एक प्राधिकरण का उल्लेख होना चाहिए.
android:enabled
- कॉन्टेंट देने वाले को सिस्टम से इंस्टैंशिएट किया जा सकता है या नहीं. यह समय है
अगर हो सकता है, तो
"true"
और अगर नहीं है, तो"false"
. डिफ़ॉल्ट वैल्यू"true"
है.<application>
एलिमेंट की अपनी खासियत होती है सभी पर लागू होने वालाenabled
एट्रिब्यूट ऐप्लिकेशन के कॉम्पोनेंट, जिनमें कॉन्टेंट देने वाले लोग भी शामिल हैं. कॉन्टेंट बनाने<application>
और<provider>
विशेषताएं दोनों"true"
होनी चाहिए, क्योंकि वे दोनों कॉन्टेंट देने वाले को चालू करने के लिए, डिफ़ॉल्ट रूप से होती हैं. अगर इनमें से कोई एक है"false"
, सेवा देने वाली कंपनी बंद है. इसे इंस्टैंशिएट नहीं किया जा सकता. android:directBootAware
क्या कॉन्टेंट देने वाले को Direct-Boot जानकारी है—यानी, क्या यह उपयोगकर्ता के डिवाइस को अनलॉक करने से पहले काम करता है.
ध्यान दें: इस दौरान डायरेक्ट बूट एक ऐसा कॉन्टेंट होता है आपके ऐप्लिकेशन में मौजूद सेवा देने वाली कंपनी सिर्फ़ उसी डेटा को ऐक्सेस कर सकती है जो डिवाइस से सुरक्षित स्टोरेज.
डिफ़ॉल्ट वैल्यू
"false"
है.android:exported
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
क्या कॉन्टेंट देने वाले दूसरे ऐप्लिकेशन के इस्तेमाल के लिए उपलब्ध है.
-
"true"
: ईमेल की सेवा देने वाली कंपनी, दूसरे ऐप्लिकेशन के लिए उपलब्ध है. कोई भी ऐप्लिकेशन ये काम कर सकता है: इसे ऐक्सेस करने के लिए प्रोवाइडर के कॉन्टेंट यूआरआई का इस्तेमाल करें, जो . -
"false"
: ईमेल की सेवा देने वाली कंपनी, दूसरे ऐप्लिकेशन के लिए उपलब्ध नहीं है. शुरूandroid:exported="false"
सेवा देने वाली कंपनी के ऐक्सेस को अपने का इस्तेमाल करें. सिर्फ़ वे ऐप्लिकेशन जिनका यूज़र आईडी (यूआईडी) और सेवा देने वाली कंपनी एक ही हो या जिन्हें अस्थायी रूप से के ज़रिएandroid:grantUriPermissions
एलिमेंट है, तो उसकी ऐक्सेस है.
यह एट्रिब्यूट, एपीआई लेवल 17 में पेश किया गया था. इसलिए, एपीआई लेवल का इस्तेमाल करने वाले सभी डिवाइसों पर 16 और उससे कम वैल्यू, इस एट्रिब्यूट का इस्तेमाल करने पर काम करती है:
"true"
. अगर आपने सेट किया है, तोandroid:targetSdkVersion
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है 17 या उससे ज़्यादा पर सेट हो जाता है, तो एपीआई वाले डिवाइसों के लिए डिफ़ॉल्ट वैल्यू"false"
है लेवल 17 और उससे ऊपर का लेवल.आपके पास
android:exported="false"
को सेट करने का विकल्प है. इसके बाद भी, अपनी इन चीज़ों के ऐक्सेस को सीमित किया जा सकता है के साथ अनुमतियां सेट करकेpermission
एट्रिब्यूट की वैल्यू सबमिट करें. -
android:grantUriPermissions
- क्या आम तौर पर ऐसे लोगों के पास
के डेटा को ऐक्सेस करना है, तो अनुमति दी जा सकती है.
प्रतिबंध को कुछ समय के लिए कम करने के लिए,
readPermission
,writePermission
,permission
, औरexported
एट्रिब्यूट.अगर अनुमति दी जा सकती है, तो यह
"true"
है और अगर नहीं दिया गया है, तो"false"
है. अगर आपने"true"
का विकल्प चुना है, तो किसी भी कॉन्टेंट को अनुमति दी जा सकती है कंपनी का डेटा शामिल है. अगर"false"
, तो सिर्फ़ अनुमति दी जा सकती है में मौजूद डेटा के सबसेट को<grant-uri-permission>
सबएलिमेंट, और वे कौनसे प्रॉडक्ट हैं. डिफ़ॉल्ट वैल्यू"false"
है.अनुमति देना, ऐप्लिकेशन के किसी कॉम्पोनेंट को एक बार देने का एक तरीका है डेटा का ऐक्सेस देता है, जिसे किसी अनुमति से सुरक्षित किया गया है. उदाहरण के लिए, अगर किसी ईमेल पते से संदेश में एक अटैचमेंट है, तो मेल ऐप्लिकेशन इस पते पर कॉल कर सकता है: इसे खोलने के लिए, सही दर्शक का इस्तेमाल किया जा सकता है. हालांकि, दर्शक के पास सामान्य टाइटल नहीं है कॉन्टेंट देने वाले का सारा डेटा देखने की अनुमति देती हैं.
ऐसे मामलों में, अनुमति
FLAG_GRANT_READ_URI_PERMISSION
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है औरFLAG_GRANT_WRITE_URI_PERMISSION
Intent
ऑब्जेक्ट को फ़्लैग करते हैं, जो कॉम्पोनेंट को चालू करता है. उदाहरण के लिए, मेल ऐप्लिकेशनFLAG_GRANT_READ_URI_PERMISSION
कोContext.startActivity()
कोIntent
की जानकारी भेजी गई. अनुमति खास हैIntent
के यूआरआई में.अगर यह सुविधा चालू की जाती है, तो इस एट्रिब्यूट को
"true"
पर सेट करके ऐसा किया जा सकता है या<grant-uri-permission>
को परिभाषित करके सब-एलिमेंट, कॉलContext.revokeUriPermission()
जब कवर किया गया यूआरआई को प्रोवाइडर से मिटा दिया जाता है.<grant-uri-permission>
भी देखें एलिमेंट. android:icon
- कॉन्टेंट देने वाले की जानकारी देने वाला आइकॉन.
यह एट्रिब्यूट, ड्रॉ किए जा सकने वाले ऐसे संसाधन के रेफ़रंस के तौर पर सेट किया गया है जिसमें शामिल है
इमेज की परिभाषा. अगर यह सेट नहीं है, तो ऐप्लिकेशन के लिए तय किया गया आइकॉन
इसके बजाय, इसका इस्तेमाल पूरी तरह से किया जाता है. ज़्यादा जानकारी के लिए,
<application>
देखें एलिमेंट काicon
एट्रिब्यूट. android:initOrder
- कॉन्टेंट देने वाले को इंस्टैंशिएट किए जाने का क्रम, समान प्रक्रिया के ज़रिए होस्ट किए गए दूसरे कॉन्टेंट देने वालों के मुकाबले. जब कॉन्टेंट देने वालों के बीच डिपेंडेंसी हो, तो इसे सेट करें एट्रिब्यूट का इस्तेमाल करके यह पक्का किया जाता है कि वे ऑर्डर में बनाए गए हों उन डिपेंडेंसी के हिसाब से ज़रूरी होता है. यह वैल्यू एक पूर्णांक होती है. बड़ी संख्याओं को पहले शुरू किया जा रहा है.
android:label
- दिए गए कॉन्टेंट के लिए ऐसा लेबल जिसे उपयोगकर्ता आसानी से पढ़ सके.
अगर यह एट्रिब्यूट सेट नहीं किया गया है, तो ऐप्लिकेशन के लिए पूरे ऐप्लिकेशन के लिए सेट किया गया लेबल
का इस्तेमाल किया गया है. ज़्यादा जानकारी के लिए,
<application>
एलिमेंट देखेंlabel
एट्रिब्यूट की वैल्यू सबमिट करें.आम तौर पर, लेबल किसी स्ट्रिंग संसाधन के रेफ़रंस के तौर पर सेट होता है, ताकि इसे यूज़र इंटरफ़ेस की अन्य स्ट्रिंग की तरह ही स्थानीय भाषा में लिखा जा सकता है. हालांकि, ऐप्लिकेशन डेवलप करते समय, आपकी सुविधा के हिसाब से, इसे रॉ स्ट्रिंग के तौर पर भी सेट किया जा सकता है.
android:multiprocess
- अगर ऐप्लिकेशन एक से ज़्यादा प्रोसेस में चलता है, तो इस एट्रिब्यूट से तय होता है कि
कॉन्टेंट देने वाले के एक से ज़्यादा इंस्टेंस बनाए जाते हैं. अगर
"true"
, ऐप्लिकेशन की हर प्रोसेस का अपना खुद का कॉन्टेंट देने वाला ऑब्जेक्ट होता है. अगर आपने"false"
, ऐप्लिकेशन की प्रोसेस कॉन्टेंट देने वाला सिर्फ़ एक ऑब्जेक्ट शेयर करती हैं. डिफ़ॉल्ट वैल्यू"false"
है.इस फ़्लैग को
"true"
पर सेट करने से, कैंपेन की परफ़ॉर्मेंस बेहतर हो सकती है यह इंटरप्रोसेस कम्यूनिकेशन का ओवरहेड है, लेकिन यह मेमोरी को भी बढ़ाता है प्रत्येक प्रोसेस का फ़ुटप्रिंट. android:name
- उस क्लास का नाम जो कॉन्टेंट देने वाले को लागू करता है, जो कि एक सब-क्लास है
ContentProvider
. आम तौर पर, यह पूरी तरह क्वालिफ़ाइड माना जाता है क्लास का नाम, जैसे"com.example.project.TransportationProvider"
. हालांकि, शॉर्टहैंड की तरह अगर नाम का पहला वर्ण एक विराम चिह्न है, तो इसे उस पैकेज के नाम में जोड़ा जाता है जो<manifest>
एलिमेंट.कोई डिफ़ॉल्ट सेटिंग नहीं है. नाम बताना ज़रूरी है.
android:permission
- उस अनुमति का नाम जिसे क्लाइंट को
कॉन्टेंट देने वाले का डेटा शामिल करते हैं. यह एट्रिब्यूट सेट करने का एक आसान तरीका है
एक से ज़्यादा बार काम करने की
अनुमति मिल सकती है. हालांकि,
readPermission
,writePermission
औरgrantUriPermissions
एट्रिब्यूट को प्राथमिकता दी जाती है नहीं.अगर
readPermission
विशेषता को भी सेट कर दिया जाता है, तो यह सामग्री देने वाले की क्वेरी के लिए ऐक्सेस को नियंत्रित करती है. अगरwritePermission
एट्रिब्यूट सेट है, तो यह प्रोवाइडर के डेटा में बदलाव करने के ऐक्सेस को कंट्रोल करता है.अनुमतियों के बारे में ज़्यादा जानकारी के लिए, यहां जाएं: अनुमतियां सेक्शन पर जाएं और सुरक्षा से जुड़ी सलाह.
android:process
- उस प्रोसेस का नाम जिसमें कॉन्टेंट देने वाला संगठन चलाता है. आम तौर पर,
किसी ऐप्लिकेशन के सभी कॉम्पोनेंट,
का इस्तेमाल करें. इसका नाम ऐप्लिकेशन पैकेज के नाम के समान है.
कॉन्टेंट बनाने
<application>
एलिमेंटprocess
एट्रिब्यूट की मदद से, डिफ़ॉल्ट तौर पर सेट हो जाता है. हालांकि, हर कॉम्पोनेंट, डिफ़ॉल्ट वैल्यू को बदल सकता है इसकीprocess
एट्रिब्यूट की मदद से, कई प्रोसेस में लागू होता है.अगर इस एट्रिब्यूट को असाइन किया गया नाम कोलन (
:
) से शुरू होता है, तो एक नया प्रक्रिया, ऐप्लिकेशन के लिए निजी होती है, जिसे ज़रूरत पड़ने पर बनाया जाता है और उस प्रक्रिया में गतिविधि चलती रहती है.अगर प्रोसेस का नाम अंग्रेज़ी के छोटे अक्षर से शुरू होता है, तो गतिविधि चलती है ग्लोबल प्रोसेस में जोड़ा जा सकता है, बशर्ते उसके पास ऐसा करने की अनुमति हो. इससे अलग-अलग ऐप्लिकेशन के कॉम्पोनेंट, एक प्रोसेस शेयर कर पाते हैं. इससे अलग-अलग ऐप्लिकेशन के कॉम्पोनेंट संसाधन का इस्तेमाल.
android:readPermission
एक ऐसी अनुमति जिसके लिए क्लाइंट को कॉन्टेंट देने वाले से क्वेरी करनी चाहिए.
अगर सेवा देने वाली कंपनी,
android:grantUriPermissions
को सेट करती है से लेकर"true"
तक या अगर कोई क्लाइंट ग्राहक की शर्तों को पूरा करता है<grant-uri-permission>
सब-एलिमेंट के आधार पर, क्लाइंट कॉन्टेंट को कुछ समय के लिए पढ़ सकता है कंपनी का डेटा शामिल है.permission
औरwritePermission
एट्रिब्यूट.android:syncable
- क्या डेटा, कॉन्टेंट देने वाले के कंट्रोल में है
को सर्वर पर मौजूद डेटा के साथ सिंक किया जा सकता है. यह
"true"
है और अगर नहीं है, तो"false"
. android:writePermission
ऐसी अनुमति जिसके लिए क्लाइंट को डेटा में बदलाव करना होता है कॉन्टेंट देने वाले के नियंत्रण में होता है.
अगर सेवा देने वाली कंपनी,
android:grantUriPermissions
को सेट करती है से लेकर"true"
तक या अगर कोई क्लाइंट ग्राहक की शर्तों को पूरा करता है<grant-uri-permission>
सब-एलिमेंट के आधार पर, क्लाइंट कॉन्टेंट में बदलाव करने के लिए कुछ समय के लिए लिखने का ऐक्सेस पा सकता है कंपनी का डेटा शामिल है.permission
औरreadPermission
एट्रिब्यूट.
- इसमें पेश किया गया:
- एपीआई लेवल 1
- यह भी देखें:
- कॉन्टेंट देने वाले
इस पेज पर मौजूद कॉन्टेंट और कोड सैंपल कॉन्टेंट के लाइसेंस में बताए गए लाइसेंस के हिसाब से हैं. Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.
आखिरी बार 2024-08-22 (UTC) को अपडेट किया गया.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"वह जानकारी मौजूद नहीं है जो मुझे चाहिए"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"बहुत मुश्किल है / बहुत सारे चरण हैं"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"पुराना"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"अनुवाद से जुड़ी समस्या"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"सैंपल / कोड से जुड़ी समस्या"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"अन्य"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"समझने में आसान है"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"मेरी समस्या हल हो गई"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"अन्य"
}]
{
"lastModified": "आखिरी बार 2024-08-22 (UTC) को अपडेट किया गया.",
"confidential": False
}