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

用于指定网址格式的以下属性是可选的,但也相互依赖:

  • 如果没有为 Intent 过滤器指定 scheme,则系统会忽略其他所有 URI 属性。
  • 如果没有为过滤器指定 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 过滤器。另请参阅清单文件概览中的 Intent 过滤器部分。

属性:
android:scheme
URI 的架构部分。这是指定 URI 时最基本的属性;必须至少为过滤器设置一个 scheme 属性,否则其他 URI 属性都没有意义。

指定的架构应不带尾随冒号(例如,应指定 http,而不是 http:)。

如果为过滤器设置了数据类型(mimeType 属性),但未设置架构,则采用 content:file: 架构。

注意:Android 框架中的架构匹配区分大小写,这一点与 RFC 不同。因此,您应始终使用小写字母指定架构。

android:host
URI 授权方的主机部分。除非也为过滤器指定了 scheme 属性,否则此属性没有意义。要匹配多个子网域,请使用星号 (*) 匹配主机中的零个或多个字符。例如,主机 *.google.com 匹配 www.google.com.google.comdeveloper.google.com

星号必须是主机属性的第一个字符。例如,主机 google.co.* 无效,因为星号通配符不是第一个字符。

注意:Android 框架中的主机名匹配区分大小写,这一点与正式的 RFC 不同。因此,您应始终使用小写字母指定主机名。

android:port
URI 授权方的端口部分。仅当同时为过滤器指定了 schemehost 属性时,此属性才有意义。
android:path
android:pathPrefix
android:pathPattern
URI 的路径部分,必须以 / 开头。path 属性指定与 Intent 对象中的完整路径匹配的完整路径。pathPrefix 属性指定只与 Intent 对象中的路径的初始部分匹配的部分路径。pathPattern 属性指定与 Intent 对象中的完整路径匹配的完整路径,但它可以包含以下通配符:
  • 星号(“*”)匹配出现零次到多次的紧邻前面的字符的一个序列。
  • 句点后跟星号(“.*”)匹配零个到多个字符的任意序列。

由于在从 XML 读取字符串时(在将其解析为模式之前)将“\”用作转义字符,因此您需要进行双重转义。例如,字面量“*”将编写为“\\*”,字面量“”将编写为“\\\\”。这基本上与采用 Java 代码构造字符串时需要编写的内容一样。

如需详细了解这三种类型的模式,请参阅 PatternMatcher 类中的 PATTERN_LITERALPATTERN_PREFIXPATTERN_SIMPLE_GLOB 的说明。

仅当同时为过滤器指定了 schemehost 属性时,这些属性才有意义。

android:mimeType
MIME 媒体类型,如 image/jpegaudio/mpeg4-generic。子类型可以是星号通配符 (*),以指示任何子类型都匹配。

Intent 过滤器经常会声明仅包含 android:mimeType 属性的 <data>

注意:Android 框架中的 MIME 类型匹配区分大小写,这一点与正式的 RFC MIME 类型不同。因此,您应始终使用小写字母指定 MIME 类型。

引入于:
API 级别 1
另请参阅:
<action>
<category>