一个字符串, 为请求的动作命名, 或者, 对于broadcast intent, 发生的并且正在被报告的动作. 例如:
常量 | 目标组件 | 动作 |
ACTION_CALL | activity | 发起一个电话呼叫. |
ACTION_EDIT | activity | 显示数据给用户来编辑. |
ACTION_MAIN | activity | 将该activity作为一个task的第一个activity启动,不传入参数也不期望返回值. |
ACTION_SYNC | activity | 将设备上的数据和一个服务器同步. |
ACTION_BATTERY_LOW | broadcast receiver | 发出电量不足的警告. |
ACTION_HEADSET_PLUG | broadcast receiver | 一个耳机正被插入或者拔出. |
ACTION_SCREEN_ON | broadcast receiver | 屏幕被点亮. |
ACTION_TIMEZONE_CHANGED | broadcast receiver | 时区设置改变. |
ACTION_DIAL | activity | 启动系统拨号程序和其他拨号程序,并显示Data里指定的电话号码 |
ACTION_SENDTO | activity | 向Data里描述的目标地址发送数据 |
你也可以定义自己的action字符串用来启动你的应用程序. 自定义的action应该包含应用程序的包名.例如"com.example.project.SHOW_COLOR".
action很大程度上决定了intent的另外部分的结构, 就像一个方法名决定了它接受的参数和返回值一样. 因此, 最好给action一个最能反映其作用的名字.
一个intent对象中的action是使用getAction()和setAction()来读写的.
Data
需要操作的数据的URI和它的MIME(多用途互联网邮件扩展,Multipurpose Internet Mail Extensions)类型. 例如, 如果action为ACTION_EDIT, 那么Data将包含待编辑的数据URI. 如果action为ACTION_CALL, Data将为tel:电话号码的URI. 如果action为ACTION_VIEW, 则Data为http:网络地址的URI.
当将一个intent和一个组件相匹配时, 除了URI外数据类型也很重要. 例如, 一个显示图片的程序不应该用来处理声音文件.
数据类型常常可以从URI推断, 特别是content:URI, 它表示该数据属于一个content provider. 但数据类型也可以被intent对象显示声明. setData()方法设置URI, 而setType()方法指定MIME类型, setDataAndType()设置数据URI和MIME类型. 它们可以使用getData()和getType()来读取.
Category
一个字符串,包含了关于处理该intent的组件的种类的信息. 一个intent对象可以有任意个category. intent类定义了许多category常数, 例如:
常量 | 含义 |
CATEGORY_BROWSABLE | 目标activity可以使用浏览器来显示-例如图片或电子邮件消息. |
CATEGORY_GADGET | 该activity可以被包含在另外一个装载小工具的activity中. |
CATEGORY_HOME | 该activity显示主屏幕,也就是用户按下Home键看到的界面. |
CATEGORY_LAUNCHER | 该activity可以作为一个任务的第一个activity,并且列在应用程序启动器中. |
CATEGORY_PREFERENCE | 该activity是一个选项面板. |
addCategory()方法为一个intent对象增加一个category, removeCategory删除一个category, getCategories()获取intent所有的category.
Extras
为键-值对形式的附加信息. 例如ACTION_TIMEZONE_CHANGED的intent有一个"time-zone"附加信息来指明新的时区, 而ACTION_HEADSET_PLUG有一个"state"附加信息来指示耳机是被插入还是被拔出.
intent对象有一系列put...()和set...()方法来设定和获取附加信息. 这些方法和Bundle对象很像. 事实上附加信息可以使用putExtras()和getExtras()作为Bundle来读和写.
Flags
各种标志. 很多标志指示android系统如何启动一个activity(例如该activity属于哪个任务)和启动后如何处理它(例如, 它是否属于最近activity列表中).
android系统和应用程序使用intent对象来送出系统广播和激活系统定义的组件.