<data>
语法:
<data android:scheme="string"
android:host="string"
android:port="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:mimeType="string" />
包含于:
<intent-filter>
说明:
将数据规范添加到intent过滤器。规范可以只是数据类型(mimeType属性),只是URI,或者是数据类型和URI。 URI由每个部分的单独属性指定:
<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>]
指定URL格式的这些属性是可选的,但也是相互依赖的:
- 如果未为intent过滤器指定方案,则忽略所有其他URI属性。
- 如果未为筛选器指定主机,则会忽略port属性和所有路径属性。
同一<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对象如何与过滤器匹配的规则,可以在另一个文档Intents and Intent Filters中找到。另请参阅清单文件概述中的“意图过滤器”部分。
属性:
android:scheme
URI的方案部分。这是指定URI的最小基本属性;必须为过滤器设置至少一个scheme属性,否则其他URI属性都不会有意义。
指定了没有尾部冒号的方案(例如,http,而不是http :)。
如果过滤器具有数据类型集(mimeType属性)但没有方案,则假定使用content:和file:scheme。
注意:与RFC不同,Android框架中的方案匹配区分大小写。因此,您应始终使用小写字母指定方案。
android:host
URI权限的主机部分。除非还为过滤器指定了scheme属性,否则此属性无意义。
注意:与正式RFC不同,Android框架中的主机名匹配区分大小写。因此,您应始终使用小写字母指定主机名。
android:port
URI权限的端口部分。仅当还为过滤器指定了方案和主机属性时,此属性才有意义。
android:path
android:pathPrefix
android:pathPattern
URI的路径部分必须以/开头。 path属性指定与Intent对象中的完整路径匹配的完整路径。 pathPrefix属性指定仅与Intent对象中路径的初始部分匹配的部分路径。 pathPattern属性指定与Intent对象中的完整路径匹配的完整路径,但它可以包含以下通配符:
- 星号('*')匹配前一个字符的0到多次出现的序列。
- 星号后跟一个句点(“。*”)匹配0到多个字符的任何序列。
因为当从XML读取字符串(在将其解析为模式之前)时,'\'被用作转义字符,所以您需要双重转义:例如,文字'*'将被写为“\\ *“和字面''将写成”\\\\“。这与在Java代码中构造字符串时需要编写的内容基本相同。
有关这三种模式的更多信息,请参阅PatternMatcher类中的PATTERN_LITERAL,PATTERN_PREFIX和PATTERN_SIMPLE_GLOB的说明。
仅当为过滤器指定了方案和主机属性时,这些属性才有意义。
android:mimeType
MIME媒体类型,例如image / jpeg或audio / mpeg4-generic。子类型可以是星号通配符(*),表示任何子类型匹配。
intent过滤器通常声明只包含android:mimeType属性的<data>。
注意:与正式的RFC MIME类型不同,Android框架中的MIME类型匹配区分大小写。因此,您应始终使用小写字母指定MIME类型。
引入于:
API Level 1
参阅:
<action>
<category>