- 语法
<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>
- 描述
- 向意图过滤器添加数据规范。规范是数据类型,使用
mimeType
属性、URI 或数据类型和 URI。URI 由每个部分的单独属性指定<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]
指定 URI 格式的这些属性是可选的,但也相互依赖
所有
<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>
您可以在
<intent-filter>
内放置任意数量的<data>
元素,以使其具有多个数据选项。其属性均无默认值。有关意图过滤器工作原理的信息,包括意图对象如何与过滤器匹配的规则,请参阅 意图和意图过滤器 和清单文件概述中的 意图过滤器 部分。
- 属性
android:scheme
- URI 的 scheme 部分。这是指定 URI 的最基本属性。必须为过滤器设置至少一个
scheme
属性,否则其他 URI 属性都没有意义。scheme 在不带尾部冒号的情况下指定,例如
http
而不是http:
。如果过滤器设置了数据类型(使用
mimeType
属性),但没有 scheme,则假定为content:
和file:
scheme。注意:Android 框架中的 scheme 匹配区分大小写,这与 RFC 不同。因此,请始终使用小写字母指定 scheme。
android:host
- URI 权限的主机部分。除非为过滤器也指定了
scheme
属性,否则此属性毫无意义。要匹配多个子域名,请使用星号 (*
) 匹配主机中的零个或多个字符。例如,主机*.google.com
匹配www.google.com
、.google.com
和developer.google.com
。星号必须是主机属性的第一个字符。例如,主机
google.co.*
无效,因为通配符星号不是第一个字符。注意:与正式的 RFC 不同,Android 框架中的主机名匹配区分大小写。因此,始终使用小写字母指定主机名。
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]
匹配任何字母,无论大小写。集合也支持“非”^
修饰符。 - 星号 (
*
) 修饰符匹配前一个模式零次或多次。 - 加号 (
+
) 修饰符匹配前一个模式一次或多次。 - 范围 (
{...}
) 修饰符指定模式可以匹配的次数。
pathAdvancedPattern
匹配器是一个评估实现,其中匹配是实时针对模式进行的,并且不支持回溯。由于在从 XML 读取字符串时,
\
用作转义字符,因此在将其解析为模式之前,您需要进行双重转义。例如,文字*
写成\\*
,文字\
写成\\\
。这就像您在 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
属性。注意:与正式的 RFC MIME 类型不同,Android 框架中的 MIME 类型匹配区分大小写。因此,始终使用小写字母指定 MIME 类型。
- 引入于
- API 级别 1
- 另请参阅
<action>
<category>
此页面上的内容和代码示例受内容许可中描述的许可证约束。Java 和 OpenJDK 是 Oracle 和/或其关联公司的商标或注册商标。
上次更新时间:2024-06-21 UTC。
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"缺少我需要的信息" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"过于复杂/步骤过多" },{ "type": "thumb-down", "id": "outOfDate", "label":"已过时" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"示例/代码问题" },{ "type": "thumb-down", "id": "otherDown", "label":"其他" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"易于理解" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"解决了我的问题" },{ "type": "thumb-up", "id": "otherUp", "label":"其他" }]
{ "lastModified": "上次更新时间:2024-06-21 UTC。", "confidential": False }