700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > intent和intentfilter

intent和intentfilter

时间:2020-08-10 20:34:45

相关推荐

intent和intentfilter

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相匹配。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。