Android
FileProvider
खोज…
एक फ़ाइल साझा करना
इस उदाहरण में आप सीखेंगे कि अन्य ऐप्स के साथ फ़ाइल कैसे साझा करें। हम इस उदाहरण में एक पीडीएफ फाइल का उपयोग करेंगे, हालांकि कोड हर दूसरे प्रारूप के साथ भी काम करता है।
रोडमैप:
उन निर्देशिकाओं को निर्दिष्ट करें जिनमें आप जिस फ़ाइल को साझा करना चाहते हैं उसे रखा गया है
फ़ाइलों को साझा करने के लिए, हम एक फ़ाइलप्रोइडर का उपयोग करेंगे, एक ऐसा वर्ग जो ऐप्स के बीच सुरक्षित फ़ाइल साझा करने की अनुमति देता है। एक FileProvider केवल पूर्वनिर्धारित निर्देशिकाओं में फ़ाइलें साझा कर सकता है, तो चलिए इन्हें परिभाषित करते हैं।
एक नई XML फ़ाइल बनाएँ, जिसमें पथ शामिल होंगे, जैसे res / xml / filepaths.xml
रास्ते जोड़ें
<paths xmlns:android="http://schemas.android.com/apk/res/android"> <files-path name="pdf_folder" path="documents/"/> </paths>
एक FileProvider परिभाषित करें और इसे फ़ाइल पथ के साथ लिंक करें
यह घोषणा में किया गया है:<manifest>
...
<application>
...
<provider
android:name="android.support.v4.context.FileProvider"
android:authorities="com.mydomain.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
...
</application>
...
</manifest>
फ़ाइल के लिए URI उत्पन्न करें
फ़ाइल साझा करने के लिए हमें फ़ाइल के लिए एक पहचानकर्ता प्रदान करना होगा। यह एक यूआरआई (यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर) का उपयोग करके किया जाता है।// We assume the file we want to load is in the documents/ subdirectory
// of the internal storage
File documentsPath = new File(Context.getFilesDir(), "documents");
File file = new File(documentsPath, "sample.pdf");
// This can also in one line of course:
// File file = new File(Context.getFilesDir(), "documents/sample.pdf");
Uri uri = FileProvider.getUriForFile(getContext(), "com.mydomain.fileprovider", file);
जैसा कि आप कोड में देख सकते हैं कि हम पहले फ़ाइल का प्रतिनिधित्व करते हुए एक नया फ़ाइल वर्ग बनाते हैं। URI प्राप्त करने के लिए हम FileProvider से हमें एक प्राप्त करने के लिए कहते हैं। दूसरा तर्क महत्वपूर्ण है: यह एक FileProvider के अधिकार को पारित करता है। यह प्रकट में परिभाषित FileProvider के अधिकार के बराबर होना चाहिए।
फ़ाइल को अन्य ऐप्स के साथ साझा करें
हम अन्य ऐप्स के साथ फ़ाइल साझा करने के लिए ShareCompat का उपयोग करते हैं:Intent intent = ShareCompat.IntentBuilder.from(getContext())
.setType("application/pdf")
.setStream(uri)
.setChooserTitle("Choose bar")
.createChooserIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Context.startActivity(intent);
एक चयनकर्ता एक मेनू है जिसमें से उपयोगकर्ता चुन सकता है कि वह किस ऐप को फ़ाइल साझा करना चाहता है। URI को अस्थायी रीड एक्सेस अनुमति देने के लिए ध्वज Intent.FLAG_GRANT_READ_URI_PERMISSION की आवश्यकता है।