安卓移动应用开发及实训

Android mobile development and application

安徽师范大学-计算机信息学院-2019-2020学年第一学期, 作者(授课教师): 周文

 

第五章 Intent

一、Intent对象

1.1 组件名称(Component name)

应该处理该Intent的组件名称。这部分是一个ComponentName对象,它由目标组件的完全限定类名(例如“cn.ahnu.TestActivity”)和组件所在的应用程序配置文件中设置的包名(例如“cn.ahnu”)组合而成。组件名称的包名部分和配置文件中设置的包名不必匹配。

1.2 动作(Action)

命名将要执行动作的字符串。在广播Intent情况下,命名已经发生即将报告的动作的字符串。在Intent类中,定义了一系列动作常量,其目标组件包括ActivityBroadcast两类。下面分别进行介绍。

1.3 数据(Data)

操作数据的URI以及该数据的MIME类型。不同动作与不同类型的数据规范匹配。例如,如果动作是ACTION_EDIT,数据应该包含用来编辑的文档的URI。如果动作是ACTION_CALL,数据应该是包含呼叫号码的tel:URI。类似的,如果动作是ACTION_VIEW而且数据是http:URI,接收的Activity用来下载和显示URI指向的数据。

常量说明
CATEGORY_DEFAULT如果Activity应该作为执行数据的默认动作的选项,则进行设置
CATEGORY_BROWSABLE如果Activity能够安全地从浏览器中调用,则进行设置
CATEGORY_TAB如果需要作为TabActivity的选项卡,则进行设置
CATEGORY_ALTERNATIVE如果Activity作为用户正在查看数据的备用动作,则进行设置
CATEGORY_SELECTED_ALTERNATIVE如果Activity作为用户当前选择做数据的备用动作,则进行设置
CATEGORY_LAUNCHER如果应该在顶层启动器中显示,则进行设置
CATEGORY_INFO如果需要提供其所在包的信息,则进行设置
CATEGORY_HOME如果是HOME Activity,则进行设置
CATEGORY_PREFERENCE如果Activity是一个偏好面板,则进行设置
CATEGORY_TEST如果用于测试,则进行设置
CATEGORY_CAR_DOCK如果设备插入到Car dock时运行Activity,则进行设置
CATEGORY_DESK_DOCK如果设备插入到desk Dock时运行Activity,则进行设置
CATEGORY_LE_DESK_DOCK如果设备插入到模拟dock(低端)时运行Activity,则进行设置
CATEGORY_HE_DESK_DOCK如果设备插入到数字dock(高端)时运行Activity,则进行设置
CATEGORY_CAR_MODE如果Activity可以用于汽车环境,则进行设置
CATEGORY_APP_MARKET如果Activity允许用户浏览和下载新应用,则进行设置

1.4 额外(Extras)

应该发送给处理Intent的组件的、包含附加信息的键值对。就像一些动作与特定种类的数据URI匹配,一些与特定额外匹配。例如,动作为ACTION_TIMEZONE_CHANGEDIntent有个“time-zone”额外来表示新时区;动作为ACTION_HEADSET_PLUGIntent有个“state”额外来表示耳机是否被插入,以及“name”额外来表示耳机的类型。如果开发人员自定义一个SHOW_COLOR动作,则应该包含额外来表示颜色值。

1.5 标记(Flags)

不同种类的标记。多数用于指示Android系统如何启动Activity(例如,Activity该属于哪个Task)以及启动后如何对待(例如,它是否属于近期的Activity列表)。所有这些标记都定义在Intent类中。

1.6 在Activity间使用Intent传递信息

1.7 返回系统Home桌面

二、Intent使用

2.1 Intent过滤器

ActivityServiceBroadcastReceiver能定义多个Intent过滤器来通知系统它们可以处理哪些隐式Intent。每个过滤器描述组件的一种能力,以及该组件可以接收的一组Intent。实际上,过滤器接收需要类型的Intent,拒绝不需要类型的Intent,但是仅限于隐式Intent。显式Intent无论其内容总可以发送给它的目标,过滤器并不干预。但是,隐式Intent只有在通过组件的Intent过滤器之后才能发送给组件。

2.2 实例:使用包含预定义动作的隐式Intent

创建Android项目,在Activity中使用包含预定义动作的隐式Intent启动另外一个Activity

2.3 实例:使用包含自定义动作的隐式Intent

创建Android项目,在Activity中使用包含自定义动作的隐式Intent启动另外一个Activity

 


本章结束

2019-9-1