<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>
תיאור:
הוספת מפרט נתונים למסנן Intent. המפרט הוא סוג נתונים, באמצעות מאפיין mimeType, 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="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> כדי לספק לו כמה אפשרויות נתונים. לאף אחד מהמאפיינים שלו אין ערכי ברירת מחדל.

מידע על אופן הפעולה של מסנני כוונות, כולל הכללים להתאמת אובייקטים של כוונות למסננים, זמין במאמרים Intents and Intent Filters ובקטע Intent filters בסקירה הכללית של קובץ המניפסט.

מאפיינים:
android:scheme
החלק של הסכימה ב-URI. זהו מאפיין חובה מינימלי לציון URI. צריך להגדיר לפחות מאפיין scheme אחד למסנן, אחרת לא תהיה משמעות למאפיינים האחרים של ה-URI.

הסכימה מצוינת ללא הנקודתיים בסוף, למשל http במקום http:.

אם במסנן מוגדר סוג נתונים (באמצעות המאפיין mimeType) אבל לא מוגדרת סכימה, הסכימות content: ו-file: מוגדרות כברירת מחדל.

הערה: התאמת הסכימה ב-Android framework היא תלוית-רישיות, בניגוד ל-RFC. לכן, תמיד צריך לציין סכימות באותיות קטנות.

android:host
חלק המארח של רשות URI. למאפיין הזה אין משמעות אלא אם מציינים גם את מאפיין scheme של המסנן. כדי להתאים לכמה תת-דומיינים, משתמשים בכוכבית (*) כדי להתאים לאפס תווים או יותר במארח. לדוגמה, המארח *.google.com תואם ל-www.google.com, ל-.google.com ול-developer.google.com.

הכוכבית צריכה להיות התו הראשון במאפיין המארח. לדוגמה, המארח google.co.* לא תקין כי התו הכללי של הכוכבית לא מופיע כתו ראשון.

הערה: התאמה של שם המארח ב-Android Framework היא תלוית-רישיות, בניגוד ל-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] תואם לכל אות, ללא קשר לאותיות רישיות או קטנות. בנוסף, אפשר להשתמש במגדיר 'לא' ^ בערכות.
  • המשנה (modifier) כוכבית (*) מתאים לדפוס הקודם אפס פעמים או יותר.
  • המגביל פלוס (+) תואם לדפוס הקודם פעם אחת או יותר.
  • המשנה (modifier) של הטווח ({...}) מציין את מספר הפעמים שתבנית יכולה להתאים.
התאמת pathAdvancedPattern היא הטמעה של הערכה שבה ההתאמה מתבצעת לתבנית בזמן אמת ללא תמיכה בחזרה אחורה.

התו \ משמש כתו בריחה כשקוראים את המחרוזת מ-XML, ולכן צריך להשתמש בבריחה כפולה לפני שמנתחים אותה כתבנית. לדוגמה, מחרוזת ליטרלית * נכתבת כ-\\*, ומחרוזת ליטרלית \ נכתבת כ-\\\\. זה דומה למה שכותבים כשיוצרים את המחרוזת בקוד Java.

מידע נוסף על חמשת סוגי התבניות האלה מופיע בתיאורים של PATTERN_LITERAL,‏ PATTERN_PREFIX,‏ PATTERN_SIMPLE_GLOB,‏ PATTERN_SUFFIX ו-PATTERN_ADVANCED_GLOB במחלקה PatternMatcher.

המאפיינים האלה רלוונטיים רק אם מציינים גם את המאפיינים scheme ו-host של המסנן.

התכונות pathSuffix ו-pathAdvancedPattern הושקו ברמת API‏ 31.

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

תבנית התאמה לקטע URI. לא כוללים את הקידומת #. למעלה מוסבר מה המשמעות של כל מאפיין ומהם הדפוסים שמותרים בו.

כדי להתאים תווים שבדרך כלל מקודדים ב-URI, צריך לכלול את הטופס הגולמי (לא מקודד) בערך המאפיין. לדוגמה: <data android:fragment="test!" /> מתאים ל-#test! ול-#test%21.

התכונה הזו הושקה ברמת API‏ 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.

התכונה הזו הושקה ברמת API‏ 35.

android:mimeType
סוג מדיה MIME, כמו image/jpeg או audio/mpeg4-generic. תת-הסוג יכול להיות תו כללי לחיפוש (*) כדי לציין שכל תת-סוג מתאים.

בדרך כלל מסנן כוונות מכריז על אלמנט <data> שכולל רק את המאפיין android:mimeType.

הערה: ההתאמה של סוג MIME ב-Android framework היא תלוית-אותיות רישיות, בניגוד לסוגי MIME רשמיים של RFC. לכן, תמיד צריך לציין סוגי MIME באותיות קטנות.

הושק ב:
רמת API‏ 1
ראו גם:
<action>
<category>