<provider>

بناء الجملة:
<provider android:authorities="list"
          android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:grantUriPermissions=["true" | "false"]
          android:icon="drawable resource"
          android:initOrder="integer"
          android:label="string resource"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:permission="string"
          android:process="string"
          android:readPermission="string"
          android:syncable=["true" | "false"]
          android:writePermission="string" >
    ...
</provider>
المضمَّنة في:
<application>
يمكن أن تحتوي على:
<meta-data>
<grant-uri-permission>
<intent-filter>
<path-permission>
description:
لتوفير أحد مكوّنات موفّر المحتوى. موفِّر المحتوى هو فئة فرعية من ContentProvider توفّر إمكانية الوصول المنظَّمة إلى البيانات التي يديرها التطبيق. يجب تحديد جميع موفّري المحتوى في تطبيقك في عنصر <provider> ضمن ملف البيان. بخلاف ذلك، لا يكون النظام على دراية بها ولا يشغّلها.

يجب الإفصاح عن موفّري المحتوى الذين يشكّلون جزءًا من تطبيقك فقط. يجب عدم الإفصاح عن موفّري المحتوى في التطبيقات الأخرى التي تستخدمها في تطبيقك.

يخزِّن نظام Android المراجع إلى موفّري المحتوى وفقًا لسلسلة authority التي تشكّل جزءًا من معرّف الموارد المنتظم (URI) للمحتوى لمقدّم الخدمة. على سبيل المثال، لنفترض أنّك تريد الوصول إلى موفّر محتوى يخزّن معلومات عن خبراء الرعاية الصحية. لإجراء ذلك، يمكنك استدعاء الطريقة ContentResolver.query() التي تستخدم معرّف موارد منتظم (URI) يحدّد الموفّر، بالإضافة إلى وسيطات أخرى:

content://com.example.project.healthcareprovider/nurses/rn

يحدّد المخطط content: معرّف الموارد المنتظم (URI) للمحتوى الذي يشير إلى موفّر محتوى Android. وتحدّد المرجع com.example.project.healthcareprovider مقدّم الخدمة نفسه. يبحث نظام Android عن مصدر التحقّق في قائمته لمقدّمي الخدمات المعروفين والجهات المعتمدة التابعة لهم. السلسلة الفرعية nurses/rn هي مسار يستخدمه موفِّر المحتوى لتحديد المجموعات الفرعية من بيانات الموفِّر.

عند تحديد الموفّر في العنصر <provider>، لا يتم تضمين المخطط أو المسار في الوسيطة android:name، بل يتم تضمين المرجع فقط.

للحصول على معلومات حول استخدام موفّري المحتوى وتطويرهم، يمكنك الاطّلاع على موفّري المحتوى.

السمات:
android:authorities
قائمة تضم مرجع موارد منتظم (URI) واحد أو أكثر يحدّد البيانات التي يوفّرها موفّر المحتوى. اسرد عدة هيئات من خلال فصل أسمائها بفاصلة منقوطة. لتجنُّب التعارضات، استخدِم اصطلاح تسمية بنمط JavaScript لأسماء المراجع، مثل com.example.provider.cartoonprovider. عادةً ما تكون اسم الفئة الفرعية ContentProvider التي تطبّق دالة الموفر

لا يوجد إعداد افتراضي. يجب تحديد مرجع واحد على الأقل.

android:enabled
ما إذا كان يمكن إنشاء مثيل لموفِّر المحتوى من خلال النظام وتكون القيمة "true" إذا أمكن و"false" إذا لم يكن الأمر كذلك. والقيمة التلقائية لهذه السمة هي "true".

ويتضمّن العنصر <application> سمة enabled الخاصة به والتي تنطبق على جميع مكوّنات التطبيق، بما في ذلك موفّرو المحتوى. يجب ضبط السمتَين <application> و<provider> على "true" لأنّهما يتم ضبطهما تلقائيًا، حتى يتم تفعيل موفِّر المحتوى. وإذا كان أحد الخيارَين "false"، يعني ذلك أنّ مقدّم الخدمة غير مفعّل. لا يمكن إنشاء مثيل له.

android:directBootAware

ما إذا كان موفِّر المحتوى على دراية بالتمهيد المباشر، أي ما إذا كان يمكن تشغيله قبل أن يفتح المستخدم قفل الجهاز

ملاحظة: أثناء التشغيل المباشر، يمكن لموفّر المحتوى في تطبيقك الوصول فقط إلى البيانات المخزّنة في وحدة تخزين محمية للأجهزة.

القيمة التلقائية هي "false".

android:exported
ما إذا كان موفِّر المحتوى متاحًا للاستخدام في التطبيقات الأخرى.
  • "true": موفِّر الخدمة متاح للتطبيقات الأخرى. يمكن لأي تطبيق استخدام معرّف الموارد المنتظم (URI) للمحتوى الخاص بالموفّر للوصول إليه، وذلك وفقًا للأذونات المحدّدة للموفِّر.
  • "false": موفِّر الخدمة غير متاح للتطبيقات الأخرى. اضبط android:exported="false" لحصر إمكانية وصول موفّر الخدمة إلى تطبيقاتك. يُسمح فقط للتطبيقات التي تحتوي على رقم تعريف المستخدم (UID) نفسه الخاص بالموفِّر، أو التطبيقات التي تم منحها مؤقتًا إمكانية الوصول إلى الموفِّر من خلال العنصر android:grantUriPermissions، إذن الوصول إليه.

بما أنّ هذه السمة تم تقديمها في المستوى 17 من واجهة برمجة التطبيقات، فإنّ جميع الأجهزة التي تستخدم المستوى 16 من واجهة برمجة التطبيقات والمستويات الأقدم تعمل كما لو تم ضبط هذه السمة "true". في حال ضبط السمة android:targetSdkVersion على 17 أو أعلى، تكون القيمة التلقائية "false" للأجهزة التي تستخدم المستوى 17 من واجهة برمجة التطبيقات والمستويات الأعلى.

يمكنك ضبط السمة android:exported="false" والاستمرار في حظر الوصول إلى مقدّم الخدمة الخاص بك من خلال ضبط الأذونات باستخدام السمة permission.

android:grantUriPermissions
سواء كان المستخدمون الذين لا يملكون الإذن بالوصول إلى بيانات موفّر المحتوى في العادة يمنحون الإذن بالوصول إلى بيانات موفّر المحتوى، يمكنهم التغلّب مؤقتًا على القيود التي تفرضها السمات readPermission وwritePermission وpermission وexported.

وتبلغ قيمة هذا الحقل "true" إذا كان بالإمكان منح الإذن، و"false" إذا لم يكن كذلك. إذا كان "true"، يمكن منح الإذن لأي من بيانات موفّر المحتوى. إذا كانت السمة "false"، لا يمكن منح الإذن إلا للمجموعات الفرعية للبيانات الواردة في عناصر <grant-uri-permission> الفرعية، إن توفّرت. القيمة التلقائية هي "false".

يُعد منح الإذن إحدى طرق منح مكون تطبيق الوصول لمرة واحدة إلى البيانات المحمية بإذن. على سبيل المثال، عندما تحتوي رسالة إلكترونية على مرفق، قد يستدعي تطبيق البريد المشاهد المناسب لفتحها، على الرغم من أن المشاهد لا يملك إذنًا عامًا للاطّلاع على جميع بيانات موفِّر المحتوى.

وفي هذه الحالات، يتم منح الإذن من خلال العلامتين FLAG_GRANT_READ_URI_PERMISSION وFLAG_GRANT_WRITE_URI_PERMISSION في الكائن Intent الذي يفعّل المكوِّن. على سبيل المثال، قد يضع تطبيق البريد FLAG_GRANT_READ_URI_PERMISSION في Intent التي تم تمريرها إلى Context.startActivity(). هذا الإذن خاص بعنوان URI في Intent.

في حال تفعيل هذه الميزة، سواء من خلال ضبط هذه السمة على "true" أو من خلال تحديد عناصر <grant-uri-permission> الفرعية، يمكنك استدعاء Context.revokeUriPermission() عند حذف معرّف موارد منتظم (URI) تم حجبه من الموفِّر.

راجِع أيضًا عنصر <grant-uri-permission>.

android:icon
رمز يمثّل موفّر المحتوى يتم تعيين هذه السمة كمرجع لمورد قابل للرسم يحتوي على تعريف الصورة. وإذا لم يتم تعيينه، فسيتم استخدام الرمز المحدد للتطبيق ككل بدلاً من ذلك. لمزيد من المعلومات، يمكنك الاطّلاع على السمة icon للعنصر <application>.
android:initOrder
الترتيب الذي يتم فيه إنشاء مثيل موفّر المحتوى مقارنةً بموفّري المحتوى الآخرين الذين تستضيفهم العملية نفسها. عندما تكون هناك تبعيات بين موفّري المحتوى، يؤدي ضبط هذه السمة لكل منهم إلى ضمان إنشائها بالترتيب الذي تتطلبه هذه التبعيات. القيمة هي عدد صحيح، مع تهيئة الأرقام الأعلى أولاً.
android:label
تصنيف للمحتوى المقدّم يمكن للمستخدمين قراءته إذا لم يتم ضبط هذه السمة، سيتم استخدام التصنيف المحدّد للتطبيق ككل بدلاً من ذلك. لمزيد من المعلومات، اطّلِع على السمة label الخاصة بالعنصر <application>.

يتم عادةً ضبط التصنيف كمرجع لمورد سلسلة، بحيث يمكن ترجمته مثل السلاسل الأخرى في واجهة المستخدم. ومع ذلك، لتسهيل عملية تطوير التطبيق، يمكن ضبطه أيضًا كسلسلة أوّلية.

android:multiprocess
إذا تم تشغيل التطبيق في عمليات متعددة، تحدد هذه السمة ما إذا تم إنشاء نُسخ متعددة من موفِّر المحتوى. إذا كان "true"، ستحتوي كل عملية من عمليات التطبيق على كائن مزوّد محتوى خاص بها. في حال "false"، تتشارك عمليات التطبيق عنصر مزوّد محتوى واحدًا فقط. القيمة التلقائية هي "false".

إنّ ضبط هذه العلامة على "true" يمكن أن يؤدي إلى تحسين الأداء من خلال تقليل أعباء التواصل البيني للعمليات، ولكنه يؤدي أيضًا إلى زيادة معدّل الذاكرة لكل عملية.

android:name
اسم الفئة التي تطبّق مزوّد المحتوى، وهي فئة فرعية من ContentProvider. يكون عادةً اسم فئة مؤهلاً بالكامل، مثل "com.example.project.TransportationProvider". ومع ذلك، باختصار، إذا كان الحرف الأول من الاسم نقطة، يتم إلحاقه باسم الحزمة المحددة في العنصر <manifest>.

لا يوجد إعداد افتراضي. يجب تحديد الاسم.

android:permission
اسم الإذن الذي على العملاء قراءة بيانات موفّر المحتوى أو كتابتها فيه هذه السمة هي طريقة ملائمة لتعيين إذن واحد لكل من القراءة والكتابة. ومع ذلك، يكون للسمات readPermission وwritePermission وgrantUriPermissions الأولوية على هذه السمة.

إذا تم ضبط السمة readPermission أيضًا، تتحكّم هذه السمة في إمكانية الوصول لإرسال طلبات بحث إلى موفِّر المحتوى. إذا تم ضبط السمة writePermission، تتحكّم هذه السمة في إمكانية الوصول لتعديل بيانات مقدّم الخدمة.

لمزيد من المعلومات حول الأذونات، يُرجى الاطّلاع على قسم الأذونات في نظرة عامة على بيان التطبيق ونصائح الأمان.

android:process
اسم العملية التي يبدأ فيها موفّر المحتوى. عادة، يتم تشغيل جميع مكونات التطبيق في العملية الافتراضية التي يتم إنشاؤها للتطبيق. وهي تحمل نفس اسم حزمة التطبيق.

يمكن لسمة process الخاصة بالعنصر <application> ضبط قيمة تلقائية مختلفة لجميع المكوّنات. ومع ذلك، يمكن لكل مكوّن إلغاء السمة التلقائية باستخدام سمة process الخاصة بها، ما يسمح لك بنشر التطبيق في عمليات متعدّدة.

إذا كان الاسم المعيّن لهذه السمة يبدأ بنقطتين (:)، يتم إنشاء عملية جديدة خاصة بالتطبيق، عند الحاجة إليها، ويتم تشغيل النشاط في تلك العملية.

إذا بدأ اسم العملية بحرف صغير، يتم تشغيل النشاط في عملية عامة بهذا الاسم، بشرط أن يكون لديه إذن بذلك. يتيح ذلك للمكونات في التطبيقات المختلفة مشاركة العملية، ما يقلل استخدام الموارد.

android:readPermission

إذن يجب أن يحصل عليه العملاء للاستفسار عن موفّر المحتوى.

إذا ضبط مقدّم الخدمة السمة android:grantUriPermissions على "true"، أو إذا استوفى عميل معيّن شروط العنصر الفرعي <grant-uri-permission>، يمكن للعميل الحصول على إذن وصول مؤقت لقراءة بيانات موفِّر المحتوى.

راجِع أيضًا السمتَين permission وwritePermission.

android:syncable
ما إذا كان من الممكن مزامنة البيانات الموجودة ضمن تحكُّم موفّر المحتوى مع البيانات على خادم إنها "true" إذا أمكن، و"false" إذا لم يكن الأمر كذلك.
android:writePermission

يشير ذلك المصطلح إلى إذن يحتاج العملاء إلى إجراء تغييرات على البيانات التي يتحكّم فيها موفِّر المحتوى.

إذا ضبط مقدّم الخدمة السمة android:grantUriPermissions على "true"، أو إذا استوفى عميل معيّن شروط العنصر الفرعي <grant-uri-permission>، يمكن للعميل الحصول على إذن وصول مؤقت للكتابة من أجل تعديل بيانات موفّر المحتوى.

راجِع أيضًا السمتَين permission وreadPermission.

تم تقديمه في:
المستوى 1 من واجهة برمجة التطبيقات
راجِع أيضًا:
موفّرو المحتوى