语法
<data android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string" />
父元素
<intent-filter>
描述
对intent filter添加data说明。这个说明可以是一个data type(mimeType属性),一个URI,或data type和URI组合。URI的每个部分都由单独的属性指定:
scheme://host:port/path orpathPrefix or pathPattern
这些属性是可选的,但也是相互依赖的:如果对这个intent filter没有指定scheme,那么所有其它的URI属性就会被忽略。如果对这个intent filter没有指定host,那么这个port属性和它的所有path属性就会被忽略。
所有的<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:host
URI的host部分。除非这个过滤器也指定了scheme,否则这个属性是无意义的。
注意:和RFC中定义的不一样的是,在android框架中匹配的主机名是区分大小写的。因此,你应当总是使用小写字母来指定主机名。
android:mimeType
MIME媒体类型,例如image/jpg或audio/mpeg4-generic。
对intent filter来说,定义只包含android:mimeType属性的<data>是最常见的。星号通配符(*)表示一切
型。
注意:和正式的RFC MIME类型中定义的不一样的是,在Android框架中匹配的MIME类型是区分大消息的。因此,你应当总是使用小写字母来指定MIME类型。
android:path
android:pathPrefix
android:pathPattern
URI的path部分。这个path属性指定了完整路径,它用来匹配在intent对象中的全路径。这个pathPrefix属性指定了部分路径,它只用来匹配这个intent对象开始部分。这个pathPattern属性指定了全路径,它用来匹配这个intent对象中的全路径,但是它还能包含如下的通配符:
·星号(*)匹配一个0到多次出现的即时(紧接)出现的前驱字符序列。
·点跟星号(.*)匹配0到多个字符的任意序列。
因为当从XML读取这个字符串之前(在它被解释器解释为模式之前),‘\’被作为转义字符使用,所以你需要使用双转义字符:例如,“*”需要写成“\\*”并且“\”需要写成“\\\\”。这基本上和如果在Java代码中构造字符串的话你需要写的东西是相同的。
想获得关于这三种类型模式的更多信息,参见PatternMatcher类中PATTERN_LITERAL,PATTERN_PREFIX,和PATTERN_SIMPLE_GLOB的描述。
这些属性只有在这个过滤器也设置了scheme和host属性时,才是有意义的。
android:port
URI的port部分。只有对这个过滤器也指定了scheme和host那么这个属性才是有意义的。
android:scheme
URI的scheme部分。这是指定URI的基本属性;对这个过滤器必须至少设置一个scheme属性,否则其它的URI属性都是没有意义的。
指定这个scheme不需要后面的冒号(例如http而不是http:)。
如果这个过滤器有数据类型设置(mimeType属性),而没有scheme,那么会自动假定scheme为content:和file:。
出处
API Level 1