欢迎来到天天文库
浏览记录
ID:43928147
大小:109.11 KB
页数:13页
时间:2019-10-16
《Intents and Intent Filters》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、IntentsandIntentFiltersIntentIntent提供了一种通用的消息系统,它允许在你的应用程序不其它的应用程序间传递Intent来执行动作和产生事件。使用Intent可以激活Android应用的三个核心组件:activity、service和BroadcastReceiver。一个Intent对象是对一次即将执行的操作的抽象描述。帮助我们在各个组件之间传递消息Intent使用场景启动Activity–Context.startActivity()–Activity.startActivityFor
2、Result()启动服务–Context.startService()。绑定服务–Context.bindService()来建立和服务的连接。发送广播–通过广播机制发送出去的Intent将会传给所有监听此Intent的BroadcastReceiversIntent六类属性ComponentnameActionDataCategoryExtrasFlagsComponentnameComponent属性明确指定Intent的目标组件的类名称通常Android框架会根据Intents中包含的其它属性的信息,比如acti
3、on、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果Component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intents的其它所有属性都是可选的。Action对执行动作的描述:操作(Action)系统自定义了很多Action,ACTION_MAIN,我们最熟悉的一个。“Android.Intents.action.MAIN”,这个值我们在每个AndroidManifest.xml文档中都可以看到。它标记当前Activity作为
4、一个程序的入口。自己也可以定义自己的Action一个字符串命名的动作将被执行,或在广播intent中,已发生动作且正被报告。Intent类定义了一些动作常量,如下:查看更多的动作请参考Intent类。其它的动作定义在AndroidAPI中,我们还可以定义自己的动作字符串一再我们的应用程序中激活组件。自定义动作字符串应该包含应用程序报名前缀,如"com.example.project.SHOW_COLOR"。动作很大程度上决定了剩下的intent如何构建,特别是数据(data)和附加(extras)字段,就像一个方法名决
5、定了参数和返回值。正是这个原因,应该尽可能明确指定动作,并紧密关联到其它intent字段。换句话说,应该定义你的组件能够处理的Intent对象的整个协议,而不仅仅是单独地定义一个动作。一个intent对象的动作通过setAction()方法设置,通过getAction()方法读取。Datadata是将作用于其上的数据的URI和数据的MIME类型。不同的动作有不同的数据规格。例如,如果动作字段是ACTION_EDIT,数据字段将包含将显示用于编辑的文档的URI;如果动作是ACTION_CALL,数据字段将是一个tel:U
6、RI和将拨打的号码;如果动作是ACTION_VIEW,数据字段是一个http:URI,接收activity将被调用去下载和显示URI指向的数据。当匹配一个intent到一个能够处理数据的组件,通常知道数据的类型(它的MIME类型)和它的URI很重要。例如,一个组件能够显示图像数据,不应该被调用去播放一个音频文件。在许多情况下,数据类型能够从URI中推测,特别是content:URIs,它表示位于设备上的数据且被内容提供者(contentprovider)控制。但是类型也能够显示地设置,setData()方法指定数据的U
7、RI,setType()指定MIME类型,setDataAndType()指定数据的URI和MIME类型。通过getData()读取URI,getType()读取类型。Category类别(category):对执行动作的附加信息进行描述可以在一个Intent对象中指定任意数量的种类描述。Intent类定义的一些种类常量,如下这些:(更多的种类常量请参考Intent类。)addCategory()方法添加一个种类到Intent对象中,removeCategory()方法删除一个之前添加的种类,getCategories
8、()方法获取Intent对象中的所有种类。Extras附件信息(extras),是用来传参的。额外的键值对信息应该传递到组件处理intent。就像动作关联的特定种类的数据URIs,也关联到某些特定的附加信息。Intent对象有一系列的put…()方法用于插入各种附加数据和一系列的get…()用于读取数据。这些方法与Bundle对象
此文档下载收益归作者所有