内容正文:
第7章 理解和使用 Intent
Android Studio 移动应用开发基础(第 2 版)
目录
7.1 Intent 入门
7.2 同步练习一 .
7.3 细说 Intent
7.4 Intent 解析
7.5 获取 Activity 返回的结果
7.6 Intent 的综合应用案例
7.7 同步练习二
7.8 广播消息和广播接收器 .
7.9 同步练习三 .
7.1 Intent 入门
Intent 不仅实现 Activity 之间的跳转,还是 Android 平台中各个部分之间实现信息沟通的桥梁;
通过一个简单的案例说明什么是 Intent,以及 Intent 的基本应用;
这个案例应用程序的目标是,首先显示一个 Activity,在这个 Activity 中使用 TextView 组件显示一张图片的名称及一个按钮,点击这个按钮,即可在一个新的 Activity 中显示这张图片;
新建名为 Ch0701 的 Android 应用程序工程,修改主界面布局文件 res/layout/activity_main.xml 中的代码:
在 res/layout 目录下,新建一个名为 layout02.xml 的布局文件:
res/values/strings.xml 文件:
如果此时运行 Ch0701 应用程序,那么可以正确显示第一个 Activity,但是当点击按钮时,不会显示第二个 Activity;
为了显示第二个 Activity,我们需要创建一个新的 Activity,使之显示 layout02.xml 文件的界面。为此,在 Ch0701 应用程序工程的 src 目录下的 com.example.ch0701 包中,新建一个名为 Activity02 的 Java 类文件:
修改MainActivity.java 文件中的代码:
修改 AndroidManifest.xml 文件:
7.2 同步练习一
编写一个与 7.1 节中的案例相似、能通过 Intent 对象打开新的 Activity 的 Android 应用程序。例如,读者可以在点击一张图片后,显示一个文本框,用于显示该图片的基本信息。
7.3 细说 Intent
Android 的 Intent 对象是联系各个 Activity 的关键对象。Intent 的中文含义是意图,可以这样理解 Intent:通过 Intent 对象告诉 Android 要做什么;
上述代码表示我们希望 Android 平台启动 Activity02。按照这种方式创建的 Intent 称为显式 Intent:在 Intent 中,我们明确地告诉 Android 平台要启动的 Activity。
还有一种 Intent 称为隐式 Intent:在 Intent 对象中指定一些条件,Android 平台会根据这些条件启动最符合条件的Activity。
为了便于读者理解隐式 Intent,对 7.1 节中的 Ch0701 应用程序工程进行修改。首先,修改 AndroidManifest.xml 文件中的代码:
修改 MainActivity.java 文件:
隐式 Intent 的配置过程:
7.3.1 Intent 的 action
Intent 的 action 主要用于启动 Activity。action 是一个字符串常量,我们可以任意定义,但是,Android 建议采用“Java 包名+特定字符串”的形式为 action 命名;
Intent 中预定义了一些常用的 action,包括 Intent.ACTION_MAIN、Intent.ACTION_VIEW、Intent.ACTION_EDIT、Intent.ACTION_PICK、Intent.ACTION_DIAL等,每个 action都有明确的含义。
为 Intent对象指定 action 的方式有以下两种:
(1)通过 Intent 类的构造方法 new Intent(String action)及 new Intent(String action, URI uri)。
(2) 通过 Intent 类的 setAction(String action)方法。
指定一个 Activity 可以被哪些 action 打开,需要在 AndroidManifest.xml 文件中使用<intent-filter>标签说明,
7.3.2 Intent 的 data
Activity 的 data 是在 AndroidManifest.xml 文件中 Activity 配置的<intent-filter>标签中通过<data>标签指定的,data 中的属性(简称 data 属性)包括 host、mim