لإتاحة ملف من تطبيقك لتطبيق آخر بأمان، يجب ضبط تطبيقك لعرض
مؤشر آمن للملف، في شكل معرف موارد منتظم (URI) للمحتوى. نظام التشغيل Android
ينشئ المكوِّن FileProvider
معرّفات الموارد المنتظمة (URI) للمحتوى من أجل
من الملفات، بناءً على المواصفات التي تقدّمها في ملف XML. يعرض لك هذا الدرس كيفية إضافة البيانات التلقائية
تنفيذ FileProvider
في تطبيقك، وكيفية
لتحديد الملفات التي تريد عرضها على التطبيقات الأخرى.
ملاحظة: الفئة FileProvider
هي جزء من
مكتبة AndroidX الأساسية. للحصول على معلومات
حول تضمين هذه المكتبة في تطبيقك، راجع
توضيح التبعيات:
تحديد FileProvider
يتطلب تحديد FileProvider
لتطبيقك إدخال واجهة
البيان. يحدد هذا الإدخال السلطة التي يجب استخدامها في إنشاء معرفات الموارد المنتظمة (URI) للمحتوى، وكذلك
اسم ملف 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>
عدة عناصر فرعية، ويحدد كل عنصر منها
الدليل المراد مشاركته. بالإضافة إلى العنصر <files-path>
، يمكنك
استخدام العنصر <external-path>
لمشاركة الأدلة في وحدة التخزين الخارجية
العنصر <cache-path>
لمشاركة الأدلة في ذاكرة التخزين المؤقت الداخلية
الدليل. للتعرف على المزيد من المعلومات حول العناصر الفرعية التي تحدد الأدلة المشتركة، راجع
FileProvider
مستندات مرجعية
ملاحظة: باستخدام ملف XML الطريقة الوحيدة التي يمكنك من خلالها تحديد الأدلة التي تريد مشاركة لا يمكنك إضافة دليل آليًا.
تتوفّر لديك الآن المواصفات الكاملة لـ "FileProvider
"
تُنشئ معرِّفات الموارد المنتظمة (URI) للمحتوى للملفات في دليل 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
لمزيد من المعلومات ذات الصلة، راجع: