- ไวยากรณ์:
- หากแท็กข้อมูลเป็นแท็กย่อยของ
<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="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>เพื่อให้มีตัวเลือกข้อมูลหลายรายการ ไม่มีแอตทริบิวต์ใดที่มีค่าเริ่มต้นดูข้อมูลเกี่ยวกับวิธีการทำงานของตัวกรอง Intent รวมถึงกฎเกี่ยวกับวิธีจับคู่ออบเจ็กต์ Intent กับตัวกรองได้ที่ส่วนIntent และตัวกรอง Intent และส่วนตัวกรอง Intent ในภาพรวมของไฟล์ Manifest
- หากไม่ได้ระบุ
- แอตทริบิวต์
android:scheme- ส่วนรูปแบบของ URI นี่คือแอตทริบิวต์ที่จำเป็นขั้นต่ำสำหรับ
การระบุ URI ต้องตั้งค่าแอตทริบิวต์
schemeอย่างน้อย 1 รายการ สำหรับตัวกรอง มิเช่นนั้นแอตทริบิวต์ URI อื่นๆ จะไม่มีความหมายมีการระบุรูปแบบโดยไม่มีเครื่องหมายโคลอนต่อท้าย เช่น
httpแทนที่จะเป็นhttp:หากตัวกรองมีการตั้งค่าประเภทข้อมูล (โดยใช้แอตทริบิวต์
mimeType) แต่ไม่มีรูปแบบ ระบบจะถือว่าใช้รูปแบบcontent:และfile:หมายเหตุ: การจับคู่รูปแบบในเฟรมเวิร์ก Android จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ซึ่งแตกต่างจาก RFC ดังนั้น ให้ระบุรูปแบบ โดยใช้ตัวอักษรพิมพ์เล็กเสมอ
android:host-
ส่วนโฮสต์ของ URI Authority แอตทริบิวต์นี้ไม่มีความหมาย
เว้นแต่จะมีการระบุแอตทริบิวต์
schemeสำหรับตัวกรองด้วย หากต้องการจับคู่โดเมนย่อยหลายรายการ ให้ใช้เครื่องหมายดอกจัน (*) เพื่อ จับคู่อักขระ 0 ตัวขึ้นไปในโฮสต์ เช่น โฮสต์*.google.comจะตรงกับwww.google.com,.google.comและdeveloper.google.comเครื่องหมายดอกจันต้องเป็นอักขระแรกของแอตทริบิวต์โฮสต์ เช่น โฮสต์
google.co.*ไม่ถูกต้องเนื่องจากไวลด์การ์ดอกขระดอกจันไม่ใช่ตัวแรกหมายเหตุ: การจับคู่ชื่อโฮสต์ในเฟรมเวิร์ก Android จะ คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ซึ่งแตกต่างจาก RFC อย่างเป็นทางการ ดังนั้น ให้ระบุชื่อโฮสต์โดยใช้ตัวอักษรพิมพ์เล็กเสมอ
android:port- ส่วนพอร์ตของสิทธิ์ URI แอตทริบิวต์นี้จะมีความหมายก็ต่อเมื่อมีการระบุแอตทริบิวต์
schemeและhostสำหรับตัวกรองด้วย android:pathandroid:pathPrefixandroid:pathSuffixandroid:pathPatternandroid:pathAdvancedPattern- ส่วนเส้นทางของ URI ซึ่งต้องขึ้นต้นด้วย
/แอตทริบิวต์pathระบุเส้นทางที่สมบูรณ์ซึ่งตรงกับเส้นทางที่สมบูรณ์ในออบเจ็กต์Intentแอตทริบิวต์pathPrefixระบุเส้นทางบางส่วนที่ตรงกับ เฉพาะส่วนเริ่มต้นของเส้นทางในออบเจ็กต์Intentระบบจะจับคู่แอตทริบิวต์
pathSuffixกับส่วนท้ายของเส้นทางในออบเจ็กต์Intentอย่างแม่นยำ และแอตทริบิวต์นี้ไม่จำเป็นต้องขึ้นต้นด้วยอักขระ/แอตทริบิวต์
pathPatternจะระบุเส้นทางที่สมบูรณ์ซึ่งตรงกับเส้นทางที่สมบูรณ์ในออบเจ็กต์Intentแต่สามารถมีอักขระไวลด์การ์ดต่อไปนี้- จุด (
.) จะจับคู่กับอักขระใดก็ได้ -
เครื่องหมายดอกจัน (
*) จะจับคู่กับลำดับของอักขระที่อยู่ก่อนหน้า ซึ่งอาจปรากฏ 0 ครั้งหรือหลายครั้งก็ได้ -
จุดตามด้วยเครื่องหมายดอกจัน (
.*) จะจับคู่กับลำดับอักขระใดก็ได้ตั้งแต่ 0 ตัวขึ้นไป
แอตทริบิวต์
pathAdvancedPatternระบุเส้นทางที่สมบูรณ์ ซึ่งจะจับคู่กับเส้นทางที่สมบูรณ์ของออบเจ็กต์Intentและรองรับรูปแบบที่คล้ายกับนิพจน์ทั่วไปต่อไปนี้-
จุด (
.) จะจับคู่กับอักขระใดก็ได้ -
ชุด (
[...]) จะตรงกับช่วงของอักขระ เช่น[0-5]จะตรงกับตัวเลขตั้งแต่ 0 ถึง 5 แต่ไม่ตรงกับตัวเลขตั้งแต่ 6 ถึง 9[a-zA-Z]ตรงกับตัวอักษรใดก็ได้ ไม่ว่าจะตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ นอกจากนี้ ชุดยังรองรับตัวแก้ไข "not"^ด้วย -
ตัวแก้ไขเครื่องหมายดอกจัน (
*) จะจับคู่รูปแบบก่อนหน้า 0 ครั้งขึ้นไป -
ตัวแก้ไขเครื่องหมายบวก (
+) จะจับคู่รูปแบบก่อนหน้าอย่างน้อย 1 ครั้ง -
ตัวแก้ไขช่วง (
{...}) จะระบุจำนวนครั้งที่รูปแบบ สามารถจับคู่ได้
pathAdvancedPatternตัวจับคู่คือการติดตั้งใช้งานการประเมินซึ่งการจับคู่ จะดำเนินการกับรูปแบบแบบเรียลไทม์โดยไม่รองรับการย้อนกลับเนื่องจาก
\ใช้เป็นอักขระหลีกเมื่ออ่านสตริงจาก XML คุณจึงต้องหลีกสองครั้งก่อนที่จะแยกวิเคราะห์เป็นรูปแบบ เช่น เขียนอักขระ*เป็น\\*และเขียนอักขระ\เป็น\\\\ซึ่งคล้ายกับสิ่งที่คุณเขียนเมื่อ สร้างสตริงในโค้ด Javaดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบทั้ง 5 ประเภทนี้ได้ในคำอธิบายของ
PATTERN_LITERAL,PATTERN_PREFIX,PATTERN_SIMPLE_GLOB,PATTERN_SUFFIXและPATTERN_ADVANCED_GLOBในคลาสPatternMatcherแอตทริบิวต์เหล่านี้จะมีความหมายก็ต่อเมื่อมีการระบุแอตทริบิวต์
schemeและhostสำหรับตัวกรองด้วยpathSuffixและpathAdvancedPatternเปิดตัวใน API ระดับ 31 - จุด (
android:fragmentandroid:fragmentPrefixandroid:fragmentSuffixandroid:fragmentPatternandroid:fragmentAdvancedPattern-
ตัวจับคู่สำหรับส่วนย่อย URI อย่าใส่คำนำหน้า
#ดูความหมายและรูปแบบที่อนุญาตในแต่ละแอตทริบิวต์ได้ที่ด้านบนหากต้องการจับคู่อักขระที่มักจะเข้ารหัส URI ให้ระบุรูปแบบดิบ (ไม่ได้เข้ารหัส) ในค่าแอตทริบิวต์ เช่น
<data android:fragment="test!" />ตรงกับ#test!และ#test%21เปิดตัวใน API ระดับ 35
android:queryandroid:queryPrefixandroid:querySuffixandroid:queryPatternandroid: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 จะ คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ซึ่งต่างจากประเภท MIME ของ RFC อย่างเป็นทางการ ดังนั้น ให้ระบุประเภท MIME โดยใช้ตัวอักษรพิมพ์เล็กเสมอ
- เปิดตัวใน
- API ระดับ 1
- ดูเพิ่มเติม
<action><category>
<data>
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2026-02-23 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2026-02-23 UTC"],[],[]]