5.Android学习之Android应用核心Intent(二)

本文深入探讨了Android中的Intent过滤器,解释了如何配置<action>、<data>和<category>标记。通过Intent过滤器,系统可以根据Action、Data和Category等属性匹配合适的组件。介绍了显式Intent与隐式Intent的区别,以及Intent的常用属性如Action、Data和Category之间的联系。

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

目录

5.Android应用核心Intent(二)

3.Intent过滤器

3-1.配置<action>标记

3-2.配置<data>标记

3-3.配置<category>标记

4.难点解答

4-1.显式Intent与隐式Intent的区别

4-2.Intent常用属性之间的联系


5.Android应用核心Intent(二)

3.Intent过滤器

使用隐式Intent启动Activity时,并没有在Intent中指明Activity所在的类。因此,Android 系统要根据某种匹配机制找到要启动的Activity。这种机制就是由Intent过滤器来实现的。

注: Intent 过滤器是一种根据Intent中的Action、Data 和Category等属性对适合接收该Intent的组件进行匹配和筛选的机制。

为了使组件能够注册Intent过滤器,通常在AndroidManifest.xml文件的各个组件声明标记中,使用<intent-filter>标记声明该组件所支持的动作、数据和种类等信息。当然,也可以在程序代码中,使用Intent对象提供的对应属性的方法来进行设置。在<intent-filter>标记中,用于设置Action属性的标记为<action>;用于设置Data属性的标记为<data>;用于设置Category属性的标记为<category>。

3-1.配置<action>标记

<action>标记用于指定组件所能响应的动作,以字符串形式表示,通常由Java类名和包的完全限定名组成。<action> 标记的语法格式如下:

<action android:name="string" />

其中,string 为字符串,可以是表5.1中的“对应字符串”列的内容,但不能直接使用类常量。例如,要设置其作为初始启动Activity(对应常量为ACTIONMAIN),那么需要将其指定为android.intet.action.MAIN。代码如下:

<action android:name= "android.intent.action.MAIN" />

除了使用标准的Action常量外,还可以自定义action的名字,为了确保名字的唯一性,一定要用该应用程序的包名作为前缀。例如,要设置名字为“DETAIL”,可以使用下面的代码:

<action android:name="com.example.action.DETAIL"/>

3-2.配置<data>标记

<data>标记用于向Action提供要操作的数据。它可以是一个URI对象或者数据类型(MIME媒体类型)。其中,URI可以分成scheme (协议或服务方式)、host (主机)、port (端口)以及path (路径)等,格式如下:

<scheme>://<host>:<port>/<path>

例如下面的URI:

content://com.example.project:200/folder/subfolder/etc

其中,content 是scheme;com.example.project是host;200 是port;folder/subfolder/etc 是path。 host和port一起组成了URI授权,如果host没有指定,则忽略post。这些属性都是可选的,但是相互之间并非完全独立。如果授权有效,则scheme必须指定; 如果path有效,则scheme 和授权必须指定。

<data>标记的语法格式如下:

<data android:scheme="string"
      android:host="string"
      android:port="string"
      android:path="string"
      android:mimeType="string" />

◆android:scheme:用于指定所需要的特定协议。

◆android:host:用于指定一个有效的主机名。

◆android:port:用于指定主机的有效端口号。

◆android:path:用于指定有效的URI路径名。

◆and

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值