किसी फ़ाइल को अपने ऐप्लिकेशन से दूसरे ऐप्लिकेशन में सुरक्षित रूप से ऑफ़र करने के लिए, आपको अपना ऐप्लिकेशन कॉन्फ़िगर करना होगा
फ़ाइल का एक सुरक्षित हैंडल, जो कि कॉन्टेंट यूआरआई के तौर पर मिलता है. Android
FileProvider
कॉम्पोनेंट इसके लिए कॉन्टेंट यूआरआई जनरेट करता है
फ़ाइलों पर आधारित होता है. इस लेसन में, डिफ़ॉल्ट पेज को जोड़ने का तरीका बताया गया है
FileProvider
को लागू करने और यह तरीका अपनाने का तरीका
वे फ़ाइलें चुनें जो आप अन्य ऐप्लिकेशन को उपलब्ध कराना चाहते हैं.
ध्यान दें: FileProvider
क्लास इसका हिस्सा है:
AndroidX कोर लाइब्रेरी. जानकारी के लिए
इस लाइब्रेरी को अपने ऐप्लिकेशन में शामिल करने के बारे में जानने के लिए,
डिपेंडेंसी के बारे में एलान.
FileProvider की जानकारी दें
आपके ऐप्लिकेशन के लिए FileProvider
तय करने के लिए, इसमें एंट्री करना ज़रूरी है
मेनिफ़ेस्ट फ़ाइल में दी गई जानकारी शामिल न करें. यह एंट्री कॉन्टेंट यूआरआई बनाने के साथ-साथ, जनरेट करने में इस्तेमाल करने के अधिकार के बारे में बताती है
उस एक्सएमएल फ़ाइल का नाम जो उन डायरेक्ट्री के बारे में बताती है जिन्हें आपका ऐप्लिकेशन शेयर कर सकता है.
नीचे दिया गया स्निपेट आपको मेनिफ़ेस्ट में फ़ाइल जोड़ने का तरीका बताता है
<provider>
एलिमेंट, जो
FileProvider
क्लास, अथॉरिटी, और
एक्सएमएल फ़ाइल का नाम:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application ...> <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.myapp.fileprovider" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> </provider> ... </application> </manifest>
इस उदाहरण में, android:authorities
एट्रिब्यूट, यूआरआई अथॉरिटी की जानकारी देता है
का इस्तेमाल, उन कॉन्टेंट यूआरआई के लिए करें जिन्हें आपको
FileProvider
.
उदाहरण में, सर्टिफ़िकेट देने वाली संस्था का नाम com.example.myapp.fileprovider
है. आपके लिए
ऐप्लिकेशन के डेटा के आधार पर,
"fileprovider" स्ट्रिंग के साथ android:package
मान में जोड़ा गया था. ज़्यादा जानकारी के लिए
के बारे में ज़्यादा जानने के लिए,
कॉन्टेंट यूआरआई और दस्तावेज़
android:authorities
एट्रिब्यूट की वैल्यू सबमिट करें.
इसका <meta-data>
चाइल्ड एलिमेंट
<provider>
उस एक्सएमएल फ़ाइल पर ले जाता है जिसमें आपकी पसंद की डायरेक्ट्री के बारे में बताया जाता है
शेयर करने. android:resource
एट्रिब्यूट, फ़ाइल का पाथ और नाम होता है. हालांकि, इसके लिए यह ज़रूरी नहीं है कि
.xml
एक्सटेंशन में बताया गया है.इस फ़ाइल में मौजूद कॉन्टेंट के बारे में अगले सेक्शन में बताया गया है.
शेयर की जा सकने वाली डायरेक्ट्री के बारे में जानकारी दें
अपने ऐप्लिकेशन मेनिफ़ेस्ट में FileProvider
को जोड़ने के बाद,
आपको वे डायरेक्ट्री बनानी होंगी जिनमें वे फ़ाइलें मौजूद हैं जिन्हें आपको शेयर करना है. यह तय करने के लिए
डायरेक्ट्री, res/xml/
में filepaths.xml
फ़ाइल बनाकर शुरू करें
आपके प्रोजेक्ट की सबडायरेक्ट्री. इस फ़ाइल में,
हर डायरेक्ट्री. नीचे दिया गया स्निपेट आपको इसकी सामग्री का एक उदाहरण दिखाता है
res/xml/filepaths.xml
. स्निपेट यह भी बताता है कि किसी सबडायरेक्ट्री को शेयर कैसे किया जाता है
की files/
डायरेक्ट्री में मिलेगी:
<paths> <files-path path="images/" name="myimages" /> </paths>
इस उदाहरण में, <files-path>
टैग
आपके ऐप्लिकेशन के स्टोरेज की files/
डायरेक्ट्री. path
एट्रिब्यूट
files/
की images/
सबडायरेक्ट्री शेयर करता है. name
एट्रिब्यूट, FileProvider
को पाथ सेगमेंट जोड़ने के लिए कहता है
files/images/
सबडायरेक्ट्री में मौजूद फ़ाइलों के लिए, कॉन्टेंट के यूआरआई को myimages
से बदला जा सकता है.
<paths>
एलिमेंट में कई चाइल्ड पब्लिशर हो सकते हैं. हर चाइल्ड, एक अलग होता है
शेयर करने के लिए डायरेक्ट्री. <files-path>
एलिमेंट के अलावा, आप ये काम कर सकते हैं
बाहरी स्टोरेज में डायरेक्ट्री शेयर करने के लिए <external-path>
एलिमेंट का इस्तेमाल करें
आपके इंटरनल कैश में डायरेक्ट्री शेयर करने के लिए <cache-path>
एलिमेंट
डायरेक्ट्री. शेयर की गई डायरेक्ट्री को तय करने वाले चाइल्ड एलिमेंट के बारे में ज़्यादा जानने के लिए,
FileProvider
रेफ़रंस दस्तावेज़.
ध्यान दें: सिर्फ़ एक्सएमएल फ़ाइल से ही अपनी पसंद की डायरेक्ट्री तय की जा सकती हैं शेयर करना; आप प्रोग्राम के हिसाब से डायरेक्ट्री नहीं जोड़ सकते.
अब आपके पास FileProvider
की पूरी जानकारी उपलब्ध है
जो आपके ऐप्लिकेशन की files/
डायरेक्ट्री में मौजूद फ़ाइलों के लिए कॉन्टेंट यूआरआई जनरेट करती है
या files/
की सबडायरेक्ट्री की फ़ाइलों के लिए. जब आपका ऐप्लिकेशन
किसी फ़ाइल के लिए कॉन्टेंट यूआरआई, इसमें
<provider>
एलिमेंट (com.example.myapp.fileprovider
),
पाथ myimages/
और फ़ाइल का नाम.
उदाहरण के लिए, अगर आप FileProvider
को
स्निपेट जोड़ा है और आपने फ़ाइल के लिए कॉन्टेंट यूआरआई का अनुरोध किया है
default_image.jpg
, FileProvider
नतीजे के तौर पर
यूआरआई:
content://com.example.myapp.fileprovider/myimages/default_image.jpg
इससे जुड़ी अतिरिक्त जानकारी के लिए, इन्हें देखें: