<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:
تضيف مواصفات بيانات إلى intent filter. تكون المواصفات نوع بيانات، باستخدام السمة mimeType، أو معرّف موارد منتظم (URI)، أو كليهما. يتم تحديد معرّف الموارد الموحّد (URI) من خلال سمات منفصلة لكل جزء من أجزائه:

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

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

  • في حال عدم تحديد scheme لـ intent filter، يتم تجاهل جميع سمات معرّف الموارد المنتظم الأخرى.
  • في حال عدم تحديد host للفلتر، سيتم تجاهل السمة port وجميع سمات المسار.

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

<intent-filter . . . >
    <data android:scheme="something" android:host="project1.example.com" />
    <data android:scheme="something-else" android:host="project2.example.com" android:path="/page1" />
    ...
</intent-filter>

تعادل ما يلي:

<intent-filter . . . >
    <data android:scheme="something" />
    <data android:scheme="something-else" />
    <data android:host="project1.example.com" />
    <data android:host="project2.example.com" />
    <data android:path="/page1" />
    ...
</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، ولكن يمكن أن تحتوي على أحرف البدل التالية:

  • تتطابق النقطة (.) مع أي حرف مفرد. لمطابقة نقطة حرفية، يجب تخطّيها باستخدام \\. في ملف XML.
  • تتطابق علامة النجمة (*) مع تسلسل من صفر إلى عدة مرات من الحرف الذي يسبقها مباشرةً. على سبيل المثال، يتطابق a* مع "a" و"aa"، ولكن لا يتطابق مع سلسلة فارغة.
  • تتطابق النقطة المتبوعة بعلامة نجمة (.*) مع أي تسلسل من صفر أو أكثر من الأحرف. على سبيل المثال، يتطابق .* مع سلسلة فارغة، ويتطابق b.* مع "b" و"bc" و "bcd".

اعتبارات مهمة بشأن pathPattern:

  • عدم التراجع: يقيّم برنامج مطابقة الأنماط في Android السلاسل في عملية تمرير واحدة للأمام بدون تراجع. إذا استهلك حرف البدل أحرفًا مطلوبة لاحقًا في النمط، ستتعذّر المطابقة.
  • .* غير حريص: حرف البدل .* غير حريص. يستهلك هذا العنصر الأحرف إلى أن يعثر على أول ظهور للحرف الحرفي التالي في النمط.
    • "abc.*xyz" لن يطابق "abcpxqrxyz". يتوقف .* بشكل غير مباشر عند أول "x" (من "px..."). ولا يتطابق الجزء المتبقي من السلسلة "qrxyz" مع "yz" المتوقّع.
    • تحذير: بما أنّ .* يبحث عن تطابق تام للأحرف للتوقف، لن يتطابق "a.*.c" مع "abbbc". يتعامل برنامج المطابقة مع النقطة الثانية . كنقطة حرفية، ويبحث في السلسلة عن "."، ويتعذّر عليه العثور على تطابق عند الوصول إلى النهاية.
  • * هي مطابقة جشعة: الحرف المحدد الذي يتبعه علامة نجمية (مثل a*) هو مطابقة جشعة. يستهلك هذا التعبير جميع مرات الظهور المتتالية لهذا الحرف بدون البحث عن أحرف أخرى.
    • "a*a" لن تطابق سلاسل مثل "aaa". يستهلك الجزء a* كل الأجزاء الثلاثة "a" بشكل نهم. يتوقّع النمط بعد ذلك ظهور "a" النهائي، ولكن السلسلة تكون قد استُنفدت، ما يؤدي إلى تعذُّر العثور على تطابق.
  • أفضل الممارسات:
    • تجنَّب الأنماط التي يكون فيها الحرف الذي يلي * مباشرةً هو نفسه الحرف الذي يسبقه (مثلاً، a*a).
    • تجنَّب وضع أحرف بدل مباشرةً بعد .* (مثلاً، .*. أو .*.*).
    • إذا كنت تنوي مطابقة بادئة، من الأفضل والأكثر فعالية استخدام android:pathPrefix بدلاً من إنهاء pathPattern بـ .*.

تحدّد السمة 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: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

أداة مطابقة لمَعلمة طلب بحث في معرّف الموارد المنتظم (URI) (وقيمة اختيارية). على سبيل المثال، يمكنك مطابقة عناوين URI التي تنتهي بـ ?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>