Android Intent学习
2010-08-23 01:16:00 来源:WEB开发网EXTRA_BCC 装有邮件密送地址的字符串数组
EXTRA_CC 装有邮件抄送地址的字符串数组
EXTRA_EMAIL 装有邮件发送地址的字符串数组
EXTRA_INTENT 使用ACTION_PICK_ACTIVITY动作时装有Intent选项的Key
EXTRA_KEY_EVENT 触发该Intent的按键的KeyEvent对象
EXTRA_PHONE_NUMBER 使用拨打电话相关Action时,电话号码字符串的Key,类型为String
EXTRA_SHORTCUT_ICON 使用ACTION_CREATE_SHORTCUT在HomeActivity创建快
...
对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”。对于没有明确指出目标组件名称的Intent,则称之为“隐式Intent”。Android系统使用Intent Filter 来寻找与隐Intent相关的对象.
显式Intent直接用组件的名称定义目标组件,这种方式很直接。但是由于开发人员往往并不清楚别的应用程序的组件名称,因此,显式Intent更多用于在应用程序内部传递消息。比如在某
应用程序内,一个Activity启动一个Service。隐式Intent恰恰相反,它不会用组件名称定义需要激活的目标组件,它更广泛地用于在不同应用程序之间传递消息。
清楚了显式Intent和隐式Intent的概念后,我们再来看看决定Intent目标组件的因素。在显式Intent消息中,决定目标组件的唯一要素就是组件名称,因此,如果你的Intent中已经明确定义了目标组件的名称,那么你就完全不用再定义其他Intent内容。而对于隐式 Intent则不同,由于没有明确的目标组件名称,所以必须由Android系统帮助应用程序寻找与Intent请求意图最匹配的组件。具体的选择方法是:Android将Intent的请求内容和一个叫做Intent Filter的过滤器比较,Intent Filter中包含系统中所有可能的待选组件。如果Intent Filter中某一组件匹配隐式Intent请求的内容,那么Android就选择该组件作为该隐式Intent的目标组件.
Android 如何知道应用程序能够处理某种类型的Intent 请求呢? 这需要应用程序在AndroidManifest.xml中声明自己所含组件的过滤器(即可以匹配哪些Intent请求)。一个没有声
明Intent Filter的组件只能响应指明自己名字的显式Intent请求,而无法响应隐式Intent请求。而一个声明了Intent Filter的组件既可以响应显式Intent请求,也可以响应隐式Intent请求。在通过和Intent Filter比较来解析隐式Intent请求时,Android将以下三个因素作为选择的参考标准。
更多精彩
赞助商链接