لتقديم ملف من تطبيقك إلى تطبيق آخر بأمان، عليك ضبط تطبيقك لتقديم
اسم معرِّف آمن للملف، على شكل معرِّف موارد منتظم للمحتوى. ينشئ مكوِّن FileProvider
في نظام التشغيل Android معرّفات الموارد المنتظمة (URI) للمحتوى للملفات، وذلك بناءً على المواصفات التي تقدّمها في ملف XML. يشرح لك هذا الدرس كيفية إضافة طريقة التنفيذ التلقائية لـ FileProvider
إلى تطبيقك وكيفية تحديد الملفات التي تريد عرضها في تطبيقات أخرى.
ملاحظة: الفئة FileProvider
هي جزء من
AndroidX Core Library. للحصول على معلومات
عن تضمين هذه المكتبة في تطبيقك، يُرجى الاطّلاع على
تعريف العناصر الاعتمادية.
تحديد FileProvider
يتطلب تحديد FileProvider
لتطبيقك إدخالاً في
البيان. يحدِّد هذا الإدخال السلطة المُستخدَمة في إنشاء معرّفات الموارد المنتظمة للمحتوى، بالإضافة إلى
اسم ملف XML الذي يحدِّد الأدلة التي يمكن لتطبيقك مشاركتها.
يوضّح لك المقتطف التالي كيفية إضافة العنصر
<provider>
إلى البيان الذي يحدّد فئة
FileProvider
والجهة المانحة للاعتماد واسمملف
XML:
<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
هيئة معرّف الموارد المنتظم (URI)
التي تريد استخدامها لمعرّفات URI للمحتوى التي يتم إنشاؤها من قِبل
FileProvider
.
في المثال، مصدر المرجع هو com.example.myapp.fileprovider
. وبالنسبة إلى تطبيقك الخاص، حدِّد مرجعًا يتألف من قيمة android:package
للتطبيق مع إلحاق السلسلة "fileprovider" به. لمزيد من المعلومات حول قيمة المرجع، يمكنك الاطّلاع على الموضوع معرّفات الموارد المنتظمة (URI) للمحتوى والمستندات حول السمة android:authorities
.
يشير العنصر الفرعي <meta-data>
من العنصر
<provider>
إلى ملف XML يحدّد الدلائل التي تريد
مشاركتها. السمة android:resource
هي مسار الملف واسمه، بدون امتداد .xml
.ويمكن الاطّلاع على محتوى هذا الملف في القسم التالي.
تحديد الدلائل القابلة للمشاركة
بعد إضافة FileProvider
إلى بيان التطبيق، عليك تحديد الأدلة التي تحتوي على الملفات التي تريد مشاركتها. لتحديد الкатаلوگ
، ابدأ بإنشاء الملف filepaths.xml
في الدليل الفرعي res/xml/
في مشروعك. في هذا الملف، حدِّد الأدلة من خلال إضافة عنصر XML لكل دليل. يعرض لك المقتطف التالي مثالاً على محتوى res/xml/filepaths.xml
. يوضّح المقتطف أيضًا كيفية مشاركة دليل فرعي
من دليل files/
في مساحة التخزين الداخلية:
<paths> <files-path path="images/" name="myimages" /> </paths>
في هذا المثال، تشارك علامة <files-path>
الأدلة ضمن دليل
files/
في مساحة التخزين الداخلية لتطبيقك. تشارك السمة path
الدليل الفرعي images/
من files/
. تطلب السمة name
من FileProvider
إضافة جزء المسار myimages
إلى معرّفات الموارد المنتظمة (URI) للمحتوى للملفات في الدليل الفرعي files/images/
.
يمكن أن يتضمّن عنصر <paths>
عناصر ثانوية متعددة، يحدّد كلّ منها directory
مختلفًا لمشاركته. بالإضافة إلى العنصر <files-path>
، يمكنك
استخدام العنصر <external-path>
لمشاركة الأدلة في مساحة التخزين الخارجية، و
العنصر <cache-path>
لمشاركة الأدلة في دليل التخزين المؤقت الداخلي
لمعرفة المزيد من المعلومات حول العناصر الثانوية التي تحدد الأدلة المشتركة، يمكنك الاطّلاع على المستندات المرجعية الخاصة بـ FileProvider
.
ملاحظة: يمكنك استخدام ملف XML لتحديد الأدلة التي تريد مشاركتها، ولا يمكنك إضافة دليل بشكل آلي.
لديك الآن مواصفات كاملة لـ FileProvider
التي تنشئ معرّفات موارد منتظمة للمحتوى للملفات في دليل files/
في
مساحة التخزين الداخلية لتطبيقك أو للملفات في الأدلة الفرعية لـ files/
. عندما ينشئ تطبيقك
رابطًا موحّدًا لعنوان الموارد (URI) للمحتوى الخاص بملف، يحتوي على السلطة المحدّدة في العنصر
<provider>
(com.example.myapp.fileprovider
)،
والمسار myimages/
، واسم الملف.
على سبيل المثال، إذا حددت FileProvider
وفقًا للمقتطفات في هذا الدرس، وطلبت معرّف موارد منتظم (URI) للمحتوى للملف default_image.jpg
، ستعرض FileProvider
معرّف الموارد المنتظم (URI) التالي:
content://com.example.myapp.fileprovider/myimages/default_image.jpg
لمزيد من المعلومات ذات الصلة، راجع: