<data>

البنية:
إذا كانت علامة البيانات هي العنصر الفرعي المباشر لعنصر <intent-filter>:
<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" />

إذا كانت علامة البيانات هي العنصر الفرعي المباشر لعنصر <uri-relative-filter-group>:
<data
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:pathSuffix="string"
      android:pathAdvancedPattern="string"
      android:fragment="string"
      android:fragmentPattern="string"
      android:fragmentPrefix="string"
      android:fragmentSuffix="string"
      android:fragmentAdvancedPattern="string"
      android:query="string"
      android:queryPattern="string"
      android:queryPrefix="string"
      android:querySuffix="string"
      android:queryAdvancedPattern="string" />
المحتوى المضمّن في:
<intent-filter>
<uri-relative-filter-group>
description:
تُضيف هذه السمة مواصفات بيانات إلى فلتر أهداف. المواصفة هي نوع بيانات، باستخدام سمة mimeType أو معرّف موارد منتظم (URI)، أو نوع بيانات ومعرّف موارد منتظم (URI) معًا. يتم تحديد عنوان URL من خلال سمات منفصلة لكل جزء من أجزائه:

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

هذه السمات التي تحدّد تنسيق معرّف الموارد المنتظم (URI) اختيارية، ولكنها تعتمد أيضًا على بعضها البعض:

  • إذا لم يتم تحديد scheme لفلتر الأهداف، يتم تجاهل جميع سمات عنوان URL الأخرى.
  • في حال عدم تحديد 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 هذه هي السمة الأساسية الأقلّ لتحديد معرّف موارد منتظم. يجب ضبط سمة 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
جزء المسار من عنوان URL، والذي يجب أن يبدأ بـ /. تحدّد سمة path مسارًا كاملاً تتم مطابقته مع المسار الكامل في عنصر Intent. تحدد سمة pathPrefix مسارًا جزئيًا تتم مطابقته مع الجزء الأول فقط من المسار في عنصر Intent.

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

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

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

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

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

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

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

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

android:fragment
android:fragmentPrefix
android:fragmentSuffix
android:fragmentPattern
android:fragmentAdvancedPattern

أداة مطابقة لجزء من معرّف الموارد المنتظم (URI) لا تُدرِج البادئة #. اطّلِع على ما يلي للتعرّف على معنى الأنماط المسموح بها في كل سمة.

لمطابقة الأحرف التي يتم ترميزها عادةً باستخدام تنسيق URI، يجب تضمين الشكل الأوّلي (غير المشفَّر) في قيمة السمة. على سبيل المثال، <data android:fragment="test!" /> يتطابق مع #test! و #test%21.

تمّت إضافة هذه الميزة في المستوى 35 من واجهة برمجة التطبيقات.

android:query
android:queryPrefix
android:querySuffix
android:queryPattern
android:queryAdvancedPattern

أداة مطابقة لمَعلمة طلب بحث عنوان URL (وقيمة اختيارية) على سبيل المثال، يمكنك مطابقة عناوين URL التي تنتهي بـ ?param=value مع <data android:query="param=value" />. لا تُدرِج البادئة ?. اطّلِع على القسم أعلاه لمعرفة معنى الأنماط المسموح بها في كل سمة.

لمطابقة الأحرف التي يتم ترميزها عادةً باستخدام تنسيق URI، يجب تضمين الشكل الأوّلي (غير المشفَّر) في قيمة السمة. على سبيل المثال، <data android:query="test!" /> يتطابق مع ?test! و ?test%21.

تم تقديمها في المستوى 35 من واجهة برمجة التطبيقات.

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

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

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

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