Android中的Intent filter使用

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,解析得到的目标组件必须至少包含这两个类别。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值