IntentFilter存在的意义

显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。
隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。

显示Intent:

  ComponentName comp = new ComponentName(FirstActivity.this, SecondActivity.class);
  Intent intent = new Intent();
  intent.setComponent(comp);
  以上代码创建了一个intent对象, 并为其指定了Component属性, 它等价于下面的代码:
  Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
  setComponent() ,setClass(),setClassName()都可以用来显式指定目标组件.
  当程序采用以上方法启动组件时, 在Intent中明确的指定了待启动的组件类, 此时的Intent属于显式intent, 显式Intent应用场合比较狭窄, 多用于启动本应用中的组件, 因为这种方式需要提前获知目标组件类的全限定名.

隐式Intent:

  隐式Intent则通过Intent中的action, category, data属性指定目标组件需要满足的若干条件, 系统筛选出满足所有条件的component, 从中选择最合适的component或者由用户选择一个component作为目标组件启动.

  //调用浏览器

  Uri uri = Uri.parse("");

  Intent it = new Intent(Intent.ACTION_VIEW,uri);

  startActivity(it);

 

   一个意图对象只能指定一个动作名称,而一个过滤器可能列举多个动作名称。

  任何一个需要隐式启动的Activity都必须要有这项:<category android:name="android.intent.category.DEFAULT"/>
  例外情况是:android.intent.category.MAIN和android.intent.category.LAUNCHER的filter中没有必要加入android.intent.category.DEFAULT,加入也是正确的

转载于:https://www.cnblogs.com/erweiyang/archive/2012/08/09/2630435.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值