- 语法
- 如果 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" />
如果 data 标签是<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。URI 通过各自的部分的单独属性指定<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]
这些指定 URI 格式的属性是可选的,但也相互依赖
同一
<intent-filter>
元素中包含的所有<data>
元素都构成同一个过滤器。例如,以下过滤器规范<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>
您可以在
<intent-filter>
中放置任意数量的<data>
元素,以提供多个数据选项。它的所有属性都没有默认值。有关 intent 过滤器如何工作的信息,包括 intent 对象与过滤器匹配的规则,请参阅“Intent 和 Intent 过滤器”以及清单文件概览中的“Intent 过滤器”部分。
- 属性
android:scheme
- URI 的 scheme 部分。这是指定 URI 的最基本属性。过滤器必须至少设置一个
scheme
属性,否则其他 URI 属性均无意义。指定 scheme 时不带冒号,例如
http
而不是http:
。如果过滤器设置了数据类型(使用
mimeType
属性)但未设置 scheme,则会假定content:
和file:
scheme。注意:与 RFC 不同,Android 框架中的 scheme 匹配区分大小写。因此,请始终使用小写字母指定 scheme。
android:host
- URI 授权的 host 部分。除非过滤器也指定了
scheme
属性,否则此属性没有意义。要匹配多个子域名,请使用星号(*
)匹配主机名中零个或多个字符。例如,主机*.google.com
匹配www.google.com
、.google.com
和developer.google.com
。星号必须是 host 属性的第一个字符。例如,主机
google.co.*
无效,因为星号通配符不是第一个字符。注意:与正式的 RFC 不同,Android 框架中的主机名匹配区分大小写。因此,请始终使用小写字母指定主机名。
android:port
- URI 授权的 port 部分。此属性仅在过滤器也指定了
scheme
和host
属性时有意义。 android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
- URI 的 path 部分,必须以
/
开头。path
属性指定一个完整路径,该路径与Intent
对象中的完整路径进行匹配。pathPrefix
属性指定一个部分路径,该路径仅与Intent
对象中路径的初始部分进行匹配。pathSuffix
属性与Intent
对象中路径的末尾部分完全匹配,此属性不必以/
字符开头。pathPattern
属性指定一个完整路径,该路径与Intent
对象中的完整路径进行匹配,但它可以包含以下通配符- 句点(
.
)匹配任何字符。 - 星号(
*
)匹配紧邻前一个字符的零个或多个出现序列。 - 句点后跟星号(
.*
)匹配零个或多个字符的任意序列。
pathAdvancedPattern
属性指定一个完整路径,该路径与Intent
对象的完整路径进行匹配,并支持以下类似正则表达式的模式- 句点(
.
)匹配任何字符。 - 集合(
[...]
)匹配字符范围。例如,[0-5]
匹配 0 到 5 的单个数字,但不匹配 6 到 9。[a-zA-Z]
匹配任何字母,不区分大小写。集合还支持“非”(^
)修饰符。 - 星号(
*
)修饰符匹配前一个模式零次或多次。 - 加号(
+
)修饰符匹配前一个模式一次或多次。 - 范围(
{...}
)修饰符指定模式可以匹配的次数。
pathAdvancedPattern
匹配器是一种评估实现,其中匹配是实时针对模式完成的,不支持回溯。因为从 XML 读取字符串时,
\
用作转义字符,所以在将其解析为模式之前,您需要双重转义。例如,字面量*
写为\\*
,字面量\
写为\\\
。这与您在 Java 代码中构造字符串时的写法类似。有关这五种模式类型的更多信息,请参阅
PatternMatcher
类中PATTERN_LITERAL
、PATTERN_PREFIX
、PATTERN_SIMPLE_GLOB
、PATTERN_SUFFIX
和PATTERN_ADVANCED_GLOB
的说明。这些属性仅在过滤器也指定了
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 查询参数(可选包含值)的匹配器。例如,您可以使用
<data android:query="param=value" />
匹配以?param=value
结尾的 URI。不包括?
前缀。每个属性的含义和允许的模式参见上文。要匹配通常进行 URI 编码的字符,请在属性值中包含原始(未编码)形式。例如,
<data android:query="test!" />
匹配?test!
和?test%21
。在 API 级别 35 中引入。
android:mimeType
- MIME 媒体类型,例如
image/jpeg
或audio/mpeg4-generic
。子类型可以是星号通配符(*
),表示匹配任何子类型。intent 过滤器通常会声明一个仅包含
android:mimeType
属性的<data>
元素。注意:与正式的 RFC MIME 类型不同,Android 框架中的 MIME 类型匹配区分大小写。因此,请始终使用小写字母指定 MIME 类型。
- 引入于
- API 级别 1
- 另请参阅
<action>
<category>
<data>
此页面上的内容和代码示例受 内容许可 中所述的许可条款约束。Java 和 OpenJDK 是 Oracle 和/或其附属公司的商标或注册商标。
上次更新时间:世界标准时间 2025 年 2 月 20 日。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的信息","missingTheInformationINeed","thumb-down"],["过于复杂/步骤过多","tooComplicatedTooManySteps","thumb-down"],["过时","outOfDate","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新时间:世界标准时间 2025 年 2 月 20 日。"],[],[]]