概述
Intent有显式Intent和隐式Intent之分:
intent.setClass(源Activity名.this, 目的Activity名.class),当指定了具体的组件名称时,往往是采用显式Intent方法;反之Android会根据其他相应信息及Intent filter的过滤条件选择相应的组件,此时往往是采用隐式Intent方式。
Intent filter使用:
Intent filter被用来描述这个Activity能够做些什么事情。Intent filter会在AndroidManifest.xml中声明,它相当于Intent的过滤器。一个应用程序开发完成后,需要告诉Android系统自己能够处理哪些隐性的Intent请求,这就要声明Intent filter,用于声明该应用程序接收什么样的Intent请求即可。Intent filter过滤Intent时,一般是通过Action、Data及Category三方面进行检测与处理的:
1.Action:实际上是一个描述了Intent即将触发动作的名称的字符串,在Intent类中,已经有一些用常量字符串表示的不同Action(如表示拨打电话等常见动作),当然用户也可以根据需要自行定义Action。一个Intent只能设置一种Action,但是一个Intent filter却可以设置多个Action过滤。当Intent filter设置了多个Action时,只需一个满足,即可完成Action验证;当Intent filter中没有说明任何一个Action时,任何的Action都不会与之匹配。而如果Intent中没有包含任何Action时,只要Intent filter中含有Action,便会匹配成功。
2.Data:Android中采用执行数据的一个URI来表示Data。Data主要完成对Intent消息中数据的封装,描述Intent的动作所操作到的数据的Uri及类型,不同类型的Action会有不同的Data封装,例如打电话的Intent会封装“tel://”格式的电话Uri,而ACTION_VIEW的Intent中的Data则会封装“http://”格式的Uri。对数据的监测主要包含两部分:数据的URI及数据类型,而数据URI又被分为三部分(即scheme/authority/path)进行匹配,只有这些全部匹配时,Data的验证才会成功。
3. Category:Intent filter同样可以设置多个Category。当Intent中的Category与Intent filter中的一个Category完全匹配时,便会通过Category的检查,而其他的Category并不受影响。但是当Intent filter没有设置Category时,只能与没有设置Category的Intent相匹配。作为一个字符串对象,一个Intent中可以包含多个Category。如果Intent指定了一个或多个category,这些类别必须全部出现在组建的类别列表中。比如Intent中包含了两个类别:LAUNCHER_CATEGORY 和ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。最后
以上就是体贴大白为你收集整理的Android中的Intent filter使用的全部内容,希望文章能够帮你解决Android中的Intent filter使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复