- ไวยากรณ์:
- หากแท็กข้อมูลเป็นแท็กย่อยโดยตรงของ
<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>
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2024-12-02 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"]],["อัปเดตล่าสุด 2024-12-02 UTC"],[],[]]