您的位置:首页 > 其它

intent和intentfilter

2016-03-15 00:59 239 查看
intent简介

intent代表了安卓应用的启动意图,根据它的各个属性来确定启动哪个组件,它可以传递

Component、Action、Data、Category、Extra以及Flag。

Component:组件名称实际上就是一个ComponentName对象,用于标识唯一的应用程序组件,即指明了期望的Intent组件,这种对象的名称是由目标组件的类名与目标组件的包名组合而成的。

Action:实际上就是一个描述了Intent所触发动作名称的字符串

系统定义的Action常量有很多,下面只列出其中一些较常见的。

ACTION_CALL,拨出Data里封装的电话号码。

ACTION_EDIT,打开Data里指定数据所对应的编码程序。

ACTION_VIEW,打开能够显示Data中封装的数据的应用程序。

ACTION_MAIN,声明程序的入口,该Action并不会接收任何数据,同时结束后也不会返回任何数据。

ACTION_BOOT_COMPLETED,BroadcastReceiver Action的常量,表明系统启动完毕。

ACTION_TIME_CHANGED,BroadcastReceiver Action的常量,表示系统时间通过设置而改变。
Data:Data主要是对Intent消息中数据的封装,主要描述Intent的动作所操作到的数据的URI及类型。不同类型的Action会有不同的Data封装。

Category:Category是对目标组件类别信息的描述。同样作为一个字符串对象,一个Intent中可以包含多个Category。与Category相关的方法有三个,addCategory添加一个Category,removeCategory删除一个Category,而getCategories得到一个Category。

CATEGORY_GADGET,表示目标Activity是可以嵌入到其他Activity中的。
CATEGORY_HOME,表明目标Activity为HOME Activity。
CATEGORY_TAB,表明目标Activity是TabActivity的一个标签下的Activity。
CATEGORY_LAUNCHER,表明目标Activity是应用程序中最先被执行的Activity。
CATEGORY_PREFERNCE,表明目标Activity是一个偏好设置的Activity。

Extra:Extra中封装了一些额外的附加信息,这些信息是以键值对的形式存在的。

Flag:一些有关系统如何启动组件的标志位,Android同样对其进行了封装。

intentfilter的简介

intentfilter实际上相当于intent的过滤器,一个应用程序开发完成后,需要告诉Android系统自己能够处理哪
些隐形的intent请求,这就需要声明intentfilter。它过滤intent的时候,一般通过Action、Data、Category三方面进行监测。


(1)检查Action

一个Intent只能设置一种Action,但是一个IntentFilter却可以设置多个Action过滤。当IntentFilter设置了多个Action时,只需一个满足即可完成Action验证。当IntentFilter中没有说明任何一个Action时,那么任何的Action都不会与之匹配。而如果Intent中没有包含任何Action,那么只要IntentFilter中含有Action时,便会匹配成功。


(2)检查Data

数据的监测主要包含两部分,即数据的URI及数据类型,而数据URI又被分成三部分进行匹配(scheme、authority、path),只有这些全部匹配时,Data的验证才会成功。


(3)检查Category

IntentFilter同样可以设置多个Category,当Intent中的Category与IntentFilter中的一个Category完全匹配时,便会通过Category的检查,而其他的Category并不受影响。但是当IntentFilter没有设置Category时,只能与没有设置Category的Intent相匹配。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: