<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:
เพิ่มข้อกำหนดในการจัดทำข้อมูลลงในตัวกรอง 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 ในภาพรวมไฟล์ Manifest

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

มีการระบุรูปแบบโดยไม่มีเครื่องหมายทวิภาคต่อท้าย เช่น http แทนที่จะเป็น http:

หากตัวกรองมีชุดข้อมูลประเภทข้อมูล (โดยใช้ mimeType ) แต่ไม่มีรูปแบบ content: และ file: เท่านั้น

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

android:host
ส่วนโฮสต์ของผู้ออกใบรับรอง แอตทริบิวต์นี้ไม่มีความหมาย ยกเว้นแอตทริบิวต์ 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 แต่สามารถมีไวลด์การ์ดต่อไปนี้ได้

  • เครื่องหมายดอกจัน (*) จะจับคู่ตัวเลขที่มีค่าเป็นศูนย์ถึงหลายครั้งของ อักขระที่อยู่ก่อนหน้าทันที
  • จุดตามด้วยเครื่องหมายดอกจัน (.*) ตรงกับการเรียงลำดับของ อักขระตั้งแต่ศูนย์ถึงจำนวนมาก

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

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบห้าประเภทนี้ โปรดดูคำอธิบายของ PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, PATTERN_SUFFIX และ PATTERN_ADVANCED_GLOB ในช่วง PatternMatcher ชั้นเรียน

แอตทริบิวต์เหล่านี้จะมีความหมายก็ต่อเมื่อ scheme และ host ไว้สำหรับตัวกรองด้วย

pathSuffix และ pathAdvancedPattern ได้เปิดตัวใน API ระดับ 31

android:mimeType
สื่อประเภท MIME เช่น image/jpeg หรือ audio/mpeg4-generic ประเภทย่อยอาจเป็นไวลด์การ์ดดอกจัน (*) เพื่อระบุว่ามี ประเภทย่อยที่ตรงกัน

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

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

เปิดตัวใน
API ระดับ 1
ดูเพิ่มเติม
<action>
<category>