- بناء الجملة:
-
<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 من واجهة برمجة التطبيقات
- راجِع أيضًا:
- موفّرو المحتوى
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2023-10-18 (حسب التوقيت العالمي المتفَّق عليه)
[]
[]