Android官方文档—APP清单(<data>)

本文详细介绍了Android中Intent Filters的工作原理,特别是&lt;data&gt;元素的使用,包括其语法、属性及其在Intent匹配过程中的作用。探讨了如何通过指定scheme、host、path等属性来精确控制组件接受的Intent类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值