AndroidMainfest.xml详解——<data>

本文详细介绍了AndroidManifest.xml文件中<data>元素的使用,包括URI的scheme、host、port、path、pathPrefix、pathPattern属性以及mimeType的设置。强调了属性间的依赖关系和Android平台对大小写的敏感性,同时提到了Intent过滤器的工作机制。

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

语法:

<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 过滤器定义 scheme ,则所有其他 URI 属性将被忽略。
如果没有为 Intent 过滤器定义 host,则 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 对象与过滤器的匹配规则,可以查阅另一篇文档 Intent 和 Intent 过滤器 。请参阅 Manifest 概述中的 Intent 过滤器 章节。
属性:
android:scheme
URI 的 scheme 部分。 这是定义一个 URI 至少必须具备的属性,否则其他 URI 属性都没有意义。
scheme 请不要以冒号结尾(比如应为 http ,而不是 http:)。
如果过滤器定义了数据类型( mimeType 属性),但没有定义 scheme , 则系统假定使用 content: 和 file: 类型的 scheme 。
注意: 与 RFC 不同,符合 Android 平台要求的 scheme 类型是大小写敏感的。因此,请确保使用小写字母来指定 scheme 类型。
android:host
URI 的主机名部分。 只有同时为过滤器指定了 scheme 属性后,本属性才有意义。
注意: 与通常的 RFC 不同,符合 Android 平台要求的主机名是大小写敏感的。因此,请确保用小写字母指定 host 。
android:port
URI 的端口部分。 只有同时为过滤器指定了 scheme 和 host 属性后,本属性才有意义。
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 的说明。
仅当过滤器的 scheme 和 host 属性都已定义时,这些属性才有意义。
android:mimeType
MIME多媒体类型,比如 image/jpeg 或 4-generic 。子类型可以是通配符星号(*),这表示可匹配任意子类型。
Intent 过滤器常常会声明一个仅包含 android:mimeType 属性的 < data > 。
注意: 注意:与通常的 RFC MIME 类型不同,符合 Android 平台要求的 MIME 类型是大小写敏感的。 因此请确保用小写字母指定 MIME 类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值