إعداد مشاركة الملفات

لإتاحة ملف من تطبيقك لتطبيق آخر بأمان، يجب ضبط تطبيقك لعرض مؤشر آمن للملف، في شكل معرف موارد منتظم (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

لمزيد من المعلومات ذات الصلة، راجع: