الموفر

الإعلانات

الموفر <provider>

 

الموفر <provider>

بناء الجملة:

وارد في:
التطبيق

يمكن أن يحتوي على:

بيانات وصفية
منح أذونات URI
مسار الأذونات

الوصف:

يعلن عن مكون موفر المحتوى. موفر المحتوى عبارة عن فئة فرعية من موفر المحتوى الذي يوفر، وصول منظم للبيانات التي يديرها التطبيق.

يجب تعريف جميع موفري المحتوى في تطبيقك بداخل العنصر <provider> في ملف الإيضاح؛ وإلا فإن النظام لن يدرك وجودهم وبالتالي لن يقوم بتشغيلهم.

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

يوفر نظام الأندرويد مراجع لموفري المحتوى وفقاً لتفويض authority السلسلة، جزء من موفر المحتوى URI.

مثال، لنفترض بأنك تريد الوصول إلى موفر محتوى يقوم بتخزين معلومات أخصائيي الرعاية الصحية.

للقيام بهذا، تستدعي الداله ()ContentResolver.query, والتي من بين معطيات أخرى تأخذ URI الذي يحدد الموفر:

المحتوى: مخطط يقوم بتعريف URI كمحتوى URI يشير إلى موفر محتوى الأندرويد.

التفويض com.example.project.healthcareprovider تقوم بتعريف الموفر نفسه؛ يبحث نظام الأندرويد عن التفويض في قائمته للموفرات المعروفه و تفويضهم.

السلسلة الفرعية “ممرضات” هي مسار، والذي يمكن لموفر المحتوى إستخدامه لتحديد مجموعات فرعية من بيانات الموفر.

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

لمزيد من المعلومات حول إستخدام وتطوير موفري المحتوى، راجع دليل واجهة برمجة التطبيقات لموفري المحتوى.

 

 

السمات:

android:authorities

قائمة أو أكثر من تفويض URI التي تحدد البيانات الموفرة، من موفر المحتوى. يتم إدراج عدة تفويضات بالفصل بين أسمائهم بفواصل منقوطة.

لتجنب التعارض، أسماء التفويض يجب أن تستخدم، إتفاقية تسمية الجافا مثل (com.example.provider.cartoonprovider).

عادة ما يكون اسم الفئة الفرعية لموفر المحتوى الذي يقوم بإجراء الموفر.

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

android:enabled

ما إذا كان يمكن تمثيل موفر المحتوى بواسطة النظام أم لا – تأخذ القيمة “صحيح” إذا أمكن ذلك، وتأخذ القيمة “خطأ” إذا لم يكن ممكناً.

القيمة الإفتراضية هي “صحيح”.

عنصر التطبيق <application> يحتوي على سمته المُمكنه والتي تنطبق على جميع مكونات التطبيق، بما في ذلك موفري المحتوى.

يجب أن تكون قيمة كلٍ من السمتين <application> و <provider> معينه على “صحيح” (كما هما إفتراضياً) ليتم تمكين موفر المحتوى.

إذا تم تعيين أحدهما على “خطأ”، فسيتم تعطيل الموفر؛ و لن يمكن إنشاء مثيل له.

 

android:directBootAware

ما إذا كان موفر المحتوى يدعم التشغيل المبدئي أم لا؛ أي سواء كان أو لم يكن بالإمكان تشغيله قبل قيام المستخدم بإلغاء قفل الجهاز.

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

القيمة الإفتراضية هي “خطأ”.

 

android:exported

ما إذا كان موفر المحتوى متاحاً للإستخدام من قبل التطبيقات الأخرى:

  • القيمة “صحيح“: الموفر متاح للتطبيقات الأخرى. يمكن لأي تطبيق إستخدام URI لموفر المحتوى للوصول إليه، وفقاً للأذونات المحددة للموفر.
  • القيمة “خطأ“: الموفر غير متاح للتطبيقات الأخرى. تعيين android:exported="false” يقوم بتقييد وصول الموفر إلى تطبيقاتك.

فقط التطبيقات التي لها نفس معرف المستخدم الذي يستخدمه الموفر يمكنها الوصول إليه. الموفر

لأن هذه السمة تم تقديمها في المستوى API 17، فإن جميع التطبيقات التي تعمل على المستوى API 16 وأقل تتصرف كما لو تم تعيين هذه السمة على “صحيح”.

إذا قمت بتعيين نسخة android:targetSdkVersion إلى الرقم 17 أو أكثر، فإن القيمة الإفتراضية ستكون “خطأ” للأجهزة التي تعمل على المستوى API 17 وأعلى.

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

 

android:grantUriPermissions

ما إذا كان سيتم منح الذين عادة لا يملكون الأذن بالوصول إلى بيانات موفر المحتوى أو لا.

تتجاوز القيود المفروضة مؤقتاً من قبل سمات أذونة الكتابة، أذونة القراءة، وسمات الأذونات – تأخذ القيمة “صحيح” إذا منحت الأذونه، وتأخذ القيمة “خطأ” إذا لم تمنح.

إذا كانت القيمة “صحيح”، يمكن منح الأذن لأي من بيانات موفر المحتوى.

وإذا كانت القيمة “خطأ” يمكن من الأذن فقط لمجموعات البيانات الفرعية المدرجة في العناصر الفرعية لـ<grant-uri-permission> إن وجدت.

القيمة الإفتراضية هي “خطأ”.

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

مثال، عندما تحتوي رسالة بريد إلكتروني على مرفق، قد يقوم تطبيق البريد بإستدعاء العارض المناسب لفتحه..

حتى لو لم يملك العارض أذن عامه للبحث في كافة بيانات موفر المحتوى.

في مثل هذه الحالات، يتم منح الأذن بواسطة أعلام FLAG_GRANT_READ_URI_PERMISSION و FLAG_GRANT_WRITE_URI_PERMISSION في كائن الغرض الذي يقوم بتنشيط المكون.

مثال، قد يقوم تطبيق البريد بوضع FLAG_GRANT_READ_URI_PERMISSION في الغرض الذي تم تمريره إلى ()Context.startActivity.

الأذن مخصصة لـURI في الغرض.

إذا قمت بتمكين هذه الميزة، إما عن طريق تعيين هذه السمة إلى “صحيح” أو عن طريق تعريف العناصر الفرعية لـ<grant-uri-permission> .

يجب عليك إستدعاء ()Context.revokeUriPermission عندما يتم حذف حماية URI من الموفر.

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

android:icon

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

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

android:initOrder

الترتيب الذي يجب أن يتم وفقاً له، إنشاء موفر للمحتوى، بالنسبة لموفري المحتوى الأخرى المستضافة على نفس العملية.

عندما تكون هناك إعتمادات بين موفري المحتوى، فإن إعداد هذه السمة لكلٍ منهم يضمن أن يتم إنشاؤهم بالترتيب المطلوب بواسطة تلك الإعتمادات.

القيمة عبارة عن عدد صحيح بسيط، مع البدء بالأرقام الأعلى أولاً.

android:label

مسمى قابل للقراءة لموفر المحتوى. إذا لم يتم تعيين هذه السمة، سيتم بدلاً من ذلك إستخدام التسمية..

التي تم إعدادها للتطبيق ككل (راجع سمة التسمية في عنصر التطبيق).

يجب تعيين التسمية كمرجع لمصدر سلسلة، بحيث يمكن ترجمتها في واجهة المستخدم كبقية السلاسل.

مع ذلك، كوسيلة ملائمة أثناء تطوير تطبيقك، يمكنك تعيينها أيضاً كسلسلة خام.

android:multiprocess

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

إذا كانت القيمة “صحيح”، فكل عملية من عمليات التطبيق سيكون لديها كائن موفر المحتوى الخاص بها.

إذا كانت القيمة “خطأ”، فإن عمليات التطبيق ستتشارك كائن موفر محتوى واحد فقط. القيمة الإفتراضية هي “خطأ”.

تعيين هذه العلامة إلى “صحيح”، قد يؤدي إلى تحسين الأداء من خلال تقليل مقدار الحمل..

في الإتصال بين العمليات، لكنه أيضاً يزيد من مساحة الذاكرة لكل عملية.

android:name

اسم الفئة التي تنفذ موفر المحتوى، وهي فئة فرعية من موفر المحتوىيجب أن يكون اسم فئة مؤهل بالكامل مثل:

(“com.example.project.TransportationProvider“).

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

لا يوجد قيمة إفتراضيه، يجب تحديد الاسم.

 

android:permission

اسم الأذونة التي يجب أن تكون لدى العملاء ليتمكنوا من قراءة أو كتابة بيانات موفر المحتوى.

هذه السمة طريقة مناسبة لإعداد أذن واحده لكل من القراءة والكتابة.

مع ذلك، سمتي القراءة والكتابة لهما الأسبقية على هذه السمة.

إذا تم أيضاً تعيين سمة أذونة القراءة، فستتحكم في الوصول للإستعلام، عن موفر المحتوى.

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

لمزيد من المعلومات حول الأذونات، راجع قسم الأذونات في المقدمة ومستند الأمان و الأذونات.

android:process

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

لديه نفس اسم حزمة التطبيق.

سمة عملية في عنصر التطبيق يمكنها تعيين إعداد إفتراضي مختلف لكافة المكونات.

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

إذا كان الاسم المحدد لهذه السمة يبدأ بنقطتين رأسيتين (‘:’)، سيتم إنشاء عملية جديدة..

خاصة بالتطبيق عند الحاجة لذلك وسيتم تشغيل النشاط في تلك العملية.

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

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

android:readPermission

أذن يجب أن تكون لدى العملاء ليتمكنوا من الإستعلام عن موفر المحتوى. راجع أيضاً سمة الأذونات وسمة أذونة الكتابة.

android:syncable

ما إذا كانت البيانات الموجودة تحت سيطرة موفر المحتوى، تتم مزامنتها مع البيانات الموجودة على الخادم أم لا..

تأخذ القيمة “صحيح” إذا توجب مزامنتها، وتأخذ القيمة “خطأ” إذا لم يتوجب مزامنتها.

android:writePermission

أذن يجب أن تكون لدى العملاء ليتمكنوا من إجراء تغييرات على البيانات التي يتحكم بها موفر المحتوى.

راجع أيضاً سمة الأذونات و سمة أذونة القراءة.

مقدم في:
API 1. 

راجع أيضاً:

موفري المحتوى.

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات