1.什么是intent
同Activity一样,也是Android应用组件
在Android中承担着一种指令输出的作用
Intent负责对应用中一次操作的动作及动作相关的数据进行描述。
Android则根据此描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用
实现Android应用组件之间的交互与通信
包括Activity、Service、BroadcastReceiver 组件
每个组件通过Intent关联,实现交互通信
实现组件之间的解耦
2.Intent包含的属性
action
要执行的动作
data
执行动作要操作的数据
type
显示指定Intent的数据类型
category
类别,被执行动作的附加信息
extras
包含所有附加信息的集合
component
指定Intent的目标组件的类名称
2.1 操作 (action)
可以通过setAction()方法进行设置,在Android系统之中已经为用户准备好了一些表示Action操作的常量
Action名称
AndroidManifest.xml配置名称
描述
ACTION_MAIN
android.intent.action.MAIN
作为一个程序的入口不需要接收数据
ACTION_VIEW
android.intent.action.VIEW
用于数据的显示
ACTION_DIAL
android.intent.action.DIAL
调用电话拨号程序
ACTION_EDIT
android.intent.action.EDIT
用于编辑给定的数据
ACTION_PICK
android.intent.action.PICK
从特定的一组数据之中进行数据的选择操作
ACTION_RUN
android.intent.action.RUN
运行数据
ACTION_SEND
android.intent.action.SEND
调用发送短信程序
ACTION_GET_CONTENT
android.intent.action.GET_CONTENT
根据指定的Type来选择打开操作内容的Intent
ACTION_CHOOSER
android.intent.action.CHOOSER
创建文件操作选择器
2.2 数据(data)
描述Intent所操作数据的URI及类型,可以通过setData()进行设置,不同操作对应着不同的Data
操作类型
Data(Uri)格式
范例
浏览网页
http://网页地址
http://www.thinkjava.cn
拨打电话
tel:电话号码
tel:07566811236
发送短信
smsto:短信接收人号码
smsto: 13527245055
查找SD卡文件
file:///sdcard/文件或目录
file:///sdcard/mypic.jpg
显示地图
geo:坐标,坐标
geo:31.899533,-27.036173
2.3 数据类型(Type)
指定要传送数据的MIME类型,可以直接通过setType()方法进行设置
作用
MIME类型
发送短信
vnd.android-dir/mms-sms
设置图片
image/png
普通文本
text/plain
设置音乐
audio/mp3
2.4 操作类别(Category)
对执行操作的类别进行描述,可以通过addCategory()方法设置多个类别
Category名称
AndroidManifest.xml配置名称
描述
CATEGORY_LAUNCHER
android.intent.category.LAUNCHER
表示此程序显示在应用程序列表中
CATEGORY_HOME
android.intent.category.HOME
显示主桌面,即开机时的第一个界面
CATEGORY_PREFERENCE
android.intent.category.PREFERENCE
运行后将出现一个选择面板
CATEGORY_BROWSABLE
android.intent.category.BROWSABLE
显示一张图片、email信息
CATEGORY_DEFAULT
android.intent.category.DEFAULT
设置一个操作的默认执行
CATEGORY_OPENABLE
android.intent.category.OPENABLE
当Action设置为“GET_CONTENT”时用于打开指定的Uri
2.5 附加信息(Extras)
传递的是一组键值对,可以使用pubExtra()方法进行设置,主要的功能是传递数据(Uri)所需要的一些额外的操作信息
操作数据
附加信息
作用
短信操作
sms_body
表示要发送短信的内容
彩信操作
Intent.EXTRA_STREAM
设置发送彩信的内容
指定接收人
Intent.EXTRA_BCC
指定接收email或信息的接收人
Email收件人
Intent.EXTRA_EMAIL
用于指定Email的接收者,接收一个数组
Email标题
Intent.EXTRA_SUBJECT
用于指定Email邮件的标题
Email内容
Intent.EXTRA_TEXT
用于设置邮件内容
2.6 组件(component)
Component本身有组件的意思,我们通过设置Component可以启动其他的Activity或者其他应用中的Activity。
简单点说,就是两个Activity之间的跳转
启动到同一个App中另外一个Activity:
intent = newIntent();
intent.setComponent(new ComponentName(this, SecondActivity.class));
startActivity(intent);
这中启动方式等同于以下两种启动方式:
intent = new Intent(this,SecondActivity.class);
startActivity(intent);
intent = newIntent();
intent.setClass(this, SecondActivity.class);
startActivity(intent);