部分内容来自以下相关文章:http://liangruijun.blog.51cto.com/3061169/634411
http://www.cnblogs.com/engine1984/p/4146621.html
本文内容包括
- Intent简介
- Intent属性
- Intent过滤器简介
Intent简介
1. Intent的介绍
Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。
2. Inten启动组件的方法
Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcasts。具体方法如下:
组件名称 | 方法名称 |
---|---|
Activity | startActivity() |
Service | startService() bindService() |
Broadcasts | sendBroadcasts() sendOrderdBroadcasts() sendStickyBroadcasts() |
3. Intent的属性
- 动作(Action)
- 数据(Date)
- 种类(Category)
- 额外(Extra)
- 标记(Flag)
- 类型(Type)
- 组件(Compent)
其中最常用的有Action属性和Data属性。
Intent的属性
1. Action属性
action是指Intent将要执行的动作,是一个字符串常量。在广播Intent中,Action用来表示已经发生即将报告的动作。
- setAction()设置
- getAction()方法读取
- 标准Activity动作
通常使用Context.startActivity()方法启动Activity
- 标准Broadcast(广播)动作
通常使用Context.registerReceiver()方法或配置文件中的< receiver>标签
2. Data属性
· 如果动作是ACTION_EDIT,数据应该包含用来编辑的文档的URI。
· 如果动作是ACTION_CALL,数据应该是包含呼叫号码的tel:URI。
· 如果动作是ACTION_VIEW而且数据是http:URI,接收的Activity用来下载和显示URI指向的数据。
- setData()指定数据的URI
- setType()制定数据的MIME类型
- setDataAndType()可同时设置URI和MIME类型
- getData()读取URI
- getType()读取MIME类型
3. Category属性
种类是字符串常量,是一个执行动作action的附加信息。在Intent对象中可以增加任意多个种类描述。
- addCategory()在Intent对象中添加种类
- removeCategory()删除上次增加的种类
- getCategories()获取当前对象的所有种类
4. Extra属性
Extra属性是添加一些组件的附加信息。比如,如果我们要通过一个Activity来发送一个Email,就可以通过Extra属性来添加subject和body。
- putExtra()添加额外信息
- getExtra()读取额外信息
5. Flag属性
整数类型,表示不同种类的标记。多数用于指示Android系统如何启动Activity(例如,Activity该属于哪个Task)以及启动后如何对待(例如,它是否属于近期的Activity列表)。
6. Type属性
Type属性显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。
7. Compent属性
Compent属性指定Intent目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 compent这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
Intent过滤器简介
Activity、Service和BroadcastReceiver能定义多个Intent过滤器来通知系统它们可以处理哪些隐式Intent。每个过滤器描述组件的一种能力,以及该组件可以接收的一组Intent。实际上,过滤器接收需要类型的Intent,拒绝不需要类型的Intent,但是仅限于隐式Intent。显式Intent无论其内容总可以发送给它的目标,过滤器并不干预。但是,隐式Intent只有在通过组件的Intent过滤器之后才能发送给组件。