<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 ข้อกําหนดคือประเภทข้อมูล โดยใช้แอตทริบิวต์ mimeType, URI หรือทั้งประเภทข้อมูลและ URI URI จะระบุด้วยแอตทริบิวต์แยกกันสำหรับแต่ละส่วน ดังนี้

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

แอตทริบิวต์เหล่านี้ที่ระบุรูปแบบ URI นั้นไม่บังคับ แต่ต้องอาศัยซึ่งกันและกัน

  • หากไม่ได้ระบุ scheme สำหรับตัวกรอง Intent ระบบจะละเว้นแอตทริบิวต์ 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> เพื่อให้มีตัวเลือกข้อมูลหลายรายการ ไม่มีแอตทริบิวต์ใดมีค่าเริ่มต้น

ดูข้อมูลเกี่ยวกับวิธีการทำงานของตัวกรอง Intent รวมถึงกฎสำหรับวิธีจับคู่ออบเจ็กต์ Intent กับตัวกรองได้ที่ส่วนIntent และตัวกรอง Intent และส่วนตัวกรอง Intent ในภาพรวมของไฟล์ Manifest

แอตทริบิวต์
android:scheme
ส่วนรูปแบบของ URI แอตทริบิวต์นี้เป็นแอตทริบิวต์ที่จำเป็นขั้นต่ำสำหรับการระบุ URI คุณต้องตั้งค่าแอตทริบิวต์ scheme อย่างน้อย 1 รายการสำหรับตัวกรอง มิฉะนั้นแอตทริบิวต์ URI อื่นๆ จะไม่มีความหมาย

ระบุรูปแบบโดยไม่มีโคลอนต่อท้าย เช่น http แทนที่จะเป็น http:

หากตัวกรองมีการตั้งค่าประเภทข้อมูล (โดยใช้แอตทริบิวต์ mimeType) แต่ไม่มีสคีมา ระบบจะถือว่าใช้สคีมา content: และ file:

หมายเหตุ: การจับคู่รูปแบบในเฟรมเวิร์ก Android จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ซึ่งต่างจาก RFC ดังนั้น โปรดระบุรูปแบบโดยใช้ตัวอักษรพิมพ์เล็กเสมอ

android:host
ส่วนโฮสต์ของหน่วยงานที่ดูแล URI แอตทริบิวต์นี้จะไม่มีความหมายเว้นแต่จะมีการระบุแอตทริบิวต์ scheme สำหรับตัวกรองด้วย หากต้องการจับคู่โดเมนย่อยหลายรายการ ให้ใช้เครื่องหมายดอกจัน (*) เพื่อจับคู่อักขระ 0 ตัวขึ้นไปในโฮสต์ เช่น โฮสต์ *.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 แต่อาจมีไวลด์การ์ดต่อไปนี้

  • เครื่องหมายดอกจัน (*) จะจับคู่กับลําดับอักขระก่อนหน้าโดยตรงซึ่งเกิดขึ้นตั้งแต่ 0 ถึงหลายครั้ง
  • จุดตามด้วยเครื่องหมายดอกจัน (.*) จะจับคู่กับลําดับอักขระใดก็ได้ตั้งแต่ 0 ถึงหลายตัว

แอตทริบิวต์ pathAdvancedPattern จะระบุเส้นทางที่สมบูรณ์ ซึ่งจะจับคู่กับเส้นทางที่สมบูรณ์ของออบเจ็กต์ Intent และรองรับรูปแบบที่คล้ายนิพจน์ทั่วไปต่อไปนี้

  • จุด (.) จะจับคู่กับอักขระใดก็ได้
  • ชุด ([...]) จะจับคู่กับช่วงอักขระ เช่น [0-5] จะจับคู่ตัวเลข 1 หลักตั้งแต่ 0 ถึง 5 แต่ไม่จับคู่กับ 6 ถึง 9 [a-zA-Z] จับคู่กับตัวอักษรใดก็ได้ ไม่ว่าตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ ชุดยังรองรับตัวแก้ไข "not" ^ ด้วย
  • ตัวแก้ไขเครื่องหมายดอกจัน (*) จะจับคู่รูปแบบก่อนหน้าตั้งแต่ 0 ครั้งขึ้นไป
  • ตัวแก้ไขเครื่องหมายบวก (+) จะจับคู่รูปแบบก่อนหน้าอย่างน้อย 1 ครั้ง
  • ตัวแก้ไขช่วง ({...}) จะระบุจํานวนครั้งที่รูปแบบจะจับคู่ได้
ตัวจับคู่ pathAdvancedPattern คือการใช้งานการประเมินที่ทำการจับคู่กับรูปแบบแบบเรียลไทม์โดยไม่รองรับการย้อนกลับ

เนื่องจาก \ ใช้เป็นอักขระหลีกเมื่ออ่านสตริงจาก XML ก่อนที่จะแยกวิเคราะห์เป็นรูปแบบ คุณจึงต้องหลีก 2 ครั้ง เช่น ตัวอักษร * จะเขียนเป็น \\* และตัวอักษร \ จะเขียนเป็น \\\ ซึ่งคล้ายกับสิ่งที่คุณเขียนเมื่อสร้างสตริงในโค้ด Java

ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบ 5 ประเภทเหล่านี้ได้ที่คำอธิบายของ 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 ประเภทย่อยอาจเป็นไวลด์การ์ดเครื่องหมายดอกจัน (*) เพื่อระบุว่าประเภทย่อยใดก็ได้ที่ตรงกัน

เป็นเรื่องปกติที่ตัวกรอง Intent จะประกาศองค์ประกอบ <data> ที่มีเพียงแอตทริบิวต์ android:mimeType

หมายเหตุ: การจับคู่ประเภท MIME ในเฟรมเวิร์ก Android จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ต่างจากประเภท MIME ของ RFC อย่างเป็นทางการ ดังนั้น ให้ระบุประเภท MIME โดยใช้ตัวอักษรพิมพ์เล็กเสมอ

เปิดตัวใน
API ระดับ 1
ดูข้อมูลเพิ่มเติมได้ที่
<action>
<category>