- بناء الجملة:
-
<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 المراجع إلى موفّري المحتوى وفقًا لجهة إصدار. سلسلة، وهي جزء من معرّف الموارد المنتظم (URI) للمحتوى الخاص بالموفِّر. على سبيل المثال، لنفترض أنك تريد الوصول إلى موفِّر محتوى يخزِّن معلومات عن خبراء الرعاية الصحية. للقيام بذلك، في هذه الحالة، عليك استدعاء الطريقة
ContentResolver.query()
، الذي يأخذ معرف الموارد المنتظم (URI) الذي يحدد الموفِّر، من بين الوسيطات الأخرى:content://com.example.project.healthcareprovider/nurses/rn
يحدّد مخطط
content:
معرّف الموارد المنتظم (URI) كمعرّف الموارد المنتظم (URI) للمحتوى الذي يشير إلى أحد موفّري محتوى Android. السلطة وتتعرّف السمةcom.example.project.healthcareprovider
على مقدّم الخدمة نفسه. تشير رسالة الأشكال البيانية يبحث نظام Android عن الجهة المعنية في قائمة مزوّدي الخدمة المعروفين والسلطات التابعة لهم. السلسلة الفرعيةnurses/rn
هي مسار يستخدمه موفّر المحتوى لتحديد مجموعات فرعية من بيانات المزود.عند تحديد الموفّر في العنصر
<provider>
، يمكنك المخطط أو المسار في الوسيطةandroid:name
، والسلطة.للحصول على معلومات عن استخدام مزودي المحتوى وتطويرهم، راجع موفّرو المحتوى:
- :
-
android:authorities
-
قائمة بمراجع URI واحدة أو أكثر تحدد البيانات التي يقدّمها موفّر المحتوى.
أدرج عدة جهات اتصال عن طريق الفصل بين أسمائها بفاصلة منقوطة.
لتجنب التعارضات، استخدم اصطلاح تسمية نمط Java لأسماء الهيئات،
مثل
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
- رمز يمثّل موفّر المحتوى
يتم تعيين هذه السمة كمرجع لمورد قابل للرسم يحتوي على
تعريف الصورة. إذا لم يتم تعيينه، فسيُرمز الرمز المحدّد للتطبيق
ككل بدلاً من ذلك. لمزيد من المعلومات، يُرجى الاطّلاع على
<application>
. السمةicon
للعنصر. android:initOrder
- ترتيب إنشاء مثيل موفّر المحتوى مقارنةً بمزودي المحتوى الآخرين الذين تستضيفهم العملية نفسها. في حالة وجود تبعيات بين موفري المحتوى، فإن تعيين هذا لكل منها التأكد من أنها قد تم إنشاؤها بالترتيب المطلوبة من قبل تلك التبعيات. القيمة هي عدد صحيح، مع بدء تشغيل الأرقام الأعلى أولاً.
android:label
- تصنيف للمحتوى المقدَّم سهل القراءة للمستخدم.
وفي حال عدم ضبط هذه السمة، سيتم ضبط التصنيف للتطبيق ككل على النحو التالي:
استخدامه بدلاً من ذلك. لمزيد من المعلومات، يُرجى الاطّلاع على صفة العنصر
<application>
السمةlabel
.يتم تعيين التسمية عادةً كمرجع لمورد سلسلة، بحيث يمكن ترجمتها مثل السلاسل الأخرى في واجهة المستخدم. ومع ذلك، ولتسهيل الأمر أثناء تطوير التطبيق، ويمكن أيضًا ضبطه كسلسلة أولية.
android:multiprocess
- في حال تشغيل التطبيق في عدة عمليات، ستحدِّد هذه السمة ما إذا كان
يتم إنشاء مثيلات متعددة لمزود المحتوى. إذا كانت
"true"
، لكل عملية من عمليات التطبيق عنصر موفّر المحتوى الخاص بها. في حال حذف"false"
، تشارك عمليات التطبيق كائنًا واحدًا فقط من موفّر المحتوى. القيمة التلقائية هي"false"
.يمكن أن يؤدي ضبط هذه العلامة على
"true"
إلى تحسين الأداء عن طريق تقليل عبء التواصل بين العمليات، ولكنه يزيد أيضًا من الذاكرة وبصمة كل عملية. android:name
- اسم الفئة التي تنفّذ موفّر المحتوى، وهي فئة فرعية من
ContentProvider
وعادةً ما يكون هذا خبيرًا اسم الفئة، مثل"com.example.project.TransportationProvider"
. ومع ذلك، وكاختصار، إذا كان الحرف الأول من الاسم نقطة، يتم إلحاقه باسم الحزمة المحددة في العنصر<manifest>
.لا يوجد إعداد افتراضي. يجب تحديد الاسم.
android:permission
- اسم الإذن الذي يجب أن عليه العملاء لقراءة أو كتابة
لبيانات موفر المحتوى. وهذه السمة هي طريقة ملائمة لضبط
إذن واحد للقراءة والكتابة. ومع ذلك،
readPermission
, تكون الأولوية للسمتَينwritePermission
وgrantUriPermissions
. أكثر من هذا.إذا كانت السمة
readPermission
أيضًا، فهي تتحكم في الوصول للاستعلام عن موفر المحتوى. إذا تم ضبط السمةwritePermission
، يتحكم في الوصول لتعديل بيانات الموفر.لمزيد من المعلومات حول الأذونات، يمكنك الاطّلاع على الأذونات في نظرة عامة على بيان التطبيق نصائح الأمان:
android:process
- اسم العملية التي يُشغِّل بها موفّر المحتوى. في العادة،
تشغيل جميع مكونات التطبيق في العملية الافتراضية التي يتم إنشاؤها
التطبيق. تحمل نفس اسم حزمة التطبيق.
تشير رسالة الأشكال البيانية عنصر
<application>
process
تعيين قيمة مختلفة افتراضيًا لجميع المكونات. ولكن يمكن لكل مكون إلغاء الإعداد الافتراضي مع سمة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 و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2024-08-20 (حسب التوقيت العالمي المتفَّق عليه)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"لا يحتوي على المعلومات التي أحتاج إليها."
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"الخطوات معقدة للغاية / كثيرة جدًا."
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"المحتوى قديم."
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"ثمة مشكلة في الترجمة."
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"مشكلة في العيّنات / التعليمات البرمجية"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"غير ذلك"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"يسهُل فهم المحتوى."
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"ساعَدني المحتوى في حلّ مشكلتي."
},{
"type": "thumb-up",
"id": "otherUp",
"label":"غير ذلك"
}]
{
"last_modified": "تاريخ التعديل الأخير: 2024-08-20 (حسب التوقيت العالمي المتفَّق عليه)",
"state": ""
}