- 语法:
<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>
- 说明:
- 向 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="project.example.com" /> ... </intent-filter>
等同于以下规范:
<intent-filter . . . > <data android:scheme="something" /> <data android:host="project.example.com" /> ... </intent-filter>
您可以在
<intent-filter>
内放置任意数量的<data>
元素,为其提供多个数据选项。它的属性都没有默认值。如需了解 intent 过滤器的工作原理,包括如何根据过滤器来匹配 intent 对象的规则,请参阅清单文件概览中的 intent 和 intent 过滤器以及 intent 过滤器部分。
- 属性:
android:scheme
- URI 的架构部分。这是指定 URI 时最基本的属性。必须至少为过滤器设置一个
scheme
属性,否则其他 URI 属性都没有意义。指定的架构应不带尾随冒号,例如,应指定
http
,而不是http:
。如果为过滤器设置了数据类型(使用
mimeType
属性),但未设置架构,则采用content:
和file:
架构。注意:Android 框架中的架构匹配区分大小写,这一点与 RFC 不同。因此,请始终使用小写字母指定架构。
android:host
- URI 授权方的主机部分。除非也为过滤器指定了
scheme
属性,否则此属性没有意义。如需匹配多个子网域,请使用星号 (*
) 匹配主机中的零个或多个字符。例如,主机*.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]
匹配任何字母(不分大小写)。集还支持“非”^
修饰符。 -
星号 (
*
) 修饰符可与前面的模式匹配零次或多次。 -
加号 (
+
) 修饰符可与前面的模式匹配一次或多次。 -
范围 (
{...}
) 修饰符指定模式可以匹配的次数。
pathAdvancedPattern
匹配器是一种评估实现,其中可实时匹配相应模式,且不支持回溯。由于在从 XML 读取字符串时(在将其解析为模式之前)将
\
用作转义字符,因此您需要进行双重转义。例如,字面量*
编写为\\*
,字面量\
编写为\\\
。这与在 Java 代码中构造字符串时编写的内容一样。如需详细了解这三种类型的模式,请参阅
PatternMatcher
类中的PATTERN_LITERAL
、PATTERN_PREFIX
、PATTERN_SIMPLE_GLOB
、PATTERN_SUFFIX
和PATTERN_ADVANCED_GLOB
的说明。仅当同时为过滤器指定了
scheme
和host
属性时,这些属性才有意义。API 级别 31 中引入了
pathSuffix
和pathAdvancedPattern
。 - 星号 (
android:mimeType
- MIME 媒体类型,如
image/jpeg
或audio/mpeg4-generic
。 子类型可以是星号通配符 (*
),以指示任何子类型都匹配。intent 过滤器经常会声明仅包含
android:mimeType
属性的<data>
元素。注意:Android 框架中的 MIME 类型匹配区分大小写,这一点与正式的 RFC MIME 类型不同。因此,请始终使用小写字母指定 MIME 类型。
- 引入于:
- API 级别 1
- 另请参阅:
<action>
<category>
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-08-22。
[null,null,["最后更新时间 (UTC):2024-08-22。"],[],[]]