<data>

بناء الجملة:
<data android:scheme="string"
      android:host="string"
      android:port="string"
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:pathSuffix="string"
      android:pathAdvancedPattern="string"
      android:mimeType="string" />
الواردة في:
<intent-filter>
description:
تُضيف هذه السمة مواصفات بيانات إلى فلتر أهداف. المواصفات هي نوع بيانات، باستخدام السمة mimeType أو معرّف موارد منتظم (URI) أو نوع بيانات ومعرّف موارد منتظم (URI) معًا. يتم تحديد عنوان URI بواسطة سمات منفصلة لكل جزء من أجزائه:

<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]

هذه السمات التي تحدد تنسيق عنوان URI اختيارية، ولكنها أيضًا تعتمد بشكل متبادل:

  • وإذا لم يتم تحديد scheme لفلتر الأهداف، سيتم تجاهل جميع سمات معرّف الموارد المنتظم (URI) الأخرى.
  • في حال عدم تحديد host للفلتر، يتم تجاهل السمة port وجميع سمات المسار.

تساهم جميع عناصر <data> المضمّنة في العنصر <intent-filter> نفسه في الفلتر نفسه. إذًا، على سبيل المثال، مواصفات عامل التصفية التالية:

<intent-filter . . . >
    <data android:scheme="something" android:host="project.example.com" />
    ...
</intent-filter>

يعادل هذا:

<intent-filter . . . >
    <data android:scheme="something" />
    <data android:host="project.example.com" />
    ...
</intent-filter>

يمكنك وضع أي عدد من عناصر <data> في <intent-filter> لمنحه خيارات متعددة للبيانات. وتجدر الإشارة إلى أنه ليس هناك أي من سماتها تتضمن قيمًا تلقائية.

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

:
android:scheme
جزء المخطط من معرّف الموارد المنتظم (URI). هذا هو الحد الأدنى من السمة الأساسية لتحديد عنوان URI. يجب ضبط سمة scheme واحدة على الأقل للفلتر، وإلا فلن تكون سمات معرّف الموارد المنتظم (URI) الأخرى ذات معنى.

يتم تحديد مخطط بدون النقطتين اللاحقة، مثل http بدلاً من http:.

إذا كان الفلتر يتضمّن مجموعة أنواع بيانات (باستخدام السمة mimeType) ولكن بدون مخطّط، يتم افتراض أنّ المخطَّطَين content: وfile:.

ملاحظة: إنّ مطابقة المخطط في إطار عمل Android حسّاسة لحالة الأحرف، على عكس RFC. ونتيجةً لذلك، حدد دائمًا المخططات باستخدام أحرف صغيرة.

android:host
الجزء المضيف من مرجع URI. لا معنى لهذه السمة ما لم يتم تحديد سمة scheme أيضًا للفلتر. لمطابقة عدة نطاقات فرعية، استخدِم علامة النجمة (*) لمطابقة صفر أو أكثر من الأحرف في المضيف. على سبيل المثال، يتطابق المضيف *.google.com مع www.google.com و.google.com وdeveloper.google.com.

يجب أن تكون علامة النجمة الحرف الأول من سمة المضيف. على سبيل المثال، المضيف google.co.* غير صالح لأنّ حرف البدل الذي يحمل علامة النجمة ليس الحرف الأول.

ملاحظة: إنّ مطابقة اسم المضيف في إطار عمل Android حساسة لحالة الأحرف، على عكس RFC الرسمي. ونتيجةً لذلك، يمكنك دائمًا تحديد أسماء المضيفين باستخدام أحرف صغيرة.

android:port
جزء المنفذ من مرجع معرّف الموارد المنتظم (URI). لا تكون هذه السمة ذات معنى إلا إذا تم تحديد السمتَين scheme وhost للفلتر أيضًا.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
جزء المسار لمعرّف الموارد المنتظم (URI)، والذي يجب أن يبدأ بـ /. تحدد السمة path مسارًا كاملاً تتم مطابقته مع المسار الكامل في كائن Intent. تحدد السمة pathPrefix مسارًا جزئيًا تتم مطابقته مع الجزء الأولي فقط من المسار في كائن Intent.

تتطابق السمة pathSuffix تمامًا مع الجزء الأخير من المسار في العنصر Intent، ولا يجب أن تبدأ هذه السمة بالحرف /. تحدّد السمة pathPattern مسارًا كاملاً تتم مطابقته مع المسار الكامل في الكائن Intent، ولكن يمكن أن تحتوي على أحرف البدل التالية:

  • تتطابق علامة النجمة (*) مع تسلسل من صفر إلى مواضع ورود متعددة للحرف السابق مباشرةً.
  • تتطابق النقطة متبوعة بعلامة النجمة (.*) مع أي تسلسل من صفر إلى عدة أحرف.

تحدد السمة pathAdvancedPattern مسارًا كاملاً، تتم مطابقته مع المسار الكامل للكائن Intent، وتتوافق مع الأنماط التالية التي تشبه التعبير العادي:

  • تتطابق النقطة (.) مع أي حرف.
  • تتطابق المجموعة ([...]) مع نطاقات الأحرف. على سبيل المثال ، تتطابق [0-5] مع رقم واحد من 0 إلى 5 ولكن لا تتطابق مع 6 إلى 9. تتطابق السمة [a-zA-Z] مع أي حرف، بغض النظر عن حالة الأحرف. تتيح المجموعات أيضًا استخدام مفتاح التعديل ^ "not".
  • مفتاح تعديل علامة النجمة (*) يتطابق مع النمط السابق صفر أو أكثر من مرة.
  • يتطابق مفتاح تعديل علامة الجمع (+) مع النمط السابق مرة واحدة أو أكثر.
  • يحدّد معدِّل النطاق ({...}) عدد المرات التي يمكن فيها مطابقة نمط.
مُطابق pathAdvancedPattern هو عبارة عن تقييم يتم فيه إجراء المطابقة مع النمط في الوقت الفعلي بدون دعم خاصية التتبع العكسي.

بما أنّه يتم استخدام \ كحرف إلغاء عند قراءة السلسلة من XML، يجب تطبيق الإلغاء المزدوج قبل تحليلها كنمط. على سبيل المثال، تتم كتابة * الحرفية بالصيغة \\*، بينما تتم كتابة \ الحرفية على النحو التالي \\\. هذا مثل ما تكتبه عند إنشاء السلسلة في تعليمة Java.

لمزيد من المعلومات حول هذه الأنواع الخمسة من الأنماط، يمكنك الاطّلاع على أوصاف PATTERN_LITERAL وPATTERN_PREFIX وPATTERN_SIMPLE_GLOB وPATTERN_SUFFIX وPATTERN_ADVANCED_GLOB في الفئة PatternMatcher.

لا تكون هذه السمات ذات معنى إلا إذا تم تحديد السمتَين scheme وhost للفلتر أيضًا.

تم طرح الترميزَين pathSuffix وpathAdvancedPattern في المستوى 31 من واجهة برمجة التطبيقات.

android:mimeType
نوع وسائط MIME، مثل image/jpeg أو audio/mpeg4-generic ويمكن أن يكون النوع الفرعي هو حرف البدل النجمي (*) للإشارة إلى تطابق أي نوع فرعي.

من الشائع أن يعرِّف فلتر الأهداف عنصر <data> الذي يتضمّن السمة android:mimeType فقط.

ملاحظة: إنّ مطابقة نوع MIME في إطار عمل Android حسّاسة لحالة الأحرف، على عكس أنواع RFC MIME الرسمية. ونتيجةً لذلك، عليك دائمًا تحديد أنواع MIME باستخدام أحرف صغيرة.

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