1、要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent。

     Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码:

[java]  view plain  copy  print ?
  1. Intent intent= new Intent(this, B.class);  

 Implicit Intent没有明确的指定要启动哪个Activity ,而是通过设置一些Intent Filter来让系统去筛选合适的Acitivity去启动。

2、intent到底发给哪个activity,需要进行三个匹配,一个是action,一个是category,一个是data。

理论上来说,如果intent不指定category,那么无论intent filter的内容是什么都应该是匹配的。但是,如果是implicit intent,Android默认给加上一个CATEGORY_DEFAULT,这样的话如果intent filter中没有android.intent.category.DEFAULT这个category的话,匹配测试就会失败。所以,如果你的 activity支持接收implicit intent的话就一定要在intent filter中加入android.intent.category.DEFAULT。

例外情况是:

[java]  view plain  copy  print ?
  1.   
  2.         "android.intent.action.MAIN" />  
  3.         "android.intent.category.LAUNCHER" />  
  4.       


中没有必要加入android.intent.category.DEFAULT,当然加入也没有问题。这个是应用启动默认的第一个启动的activity(每个应用有那么多activity,总得有一个是第一个启动的吧)

 

如果自己定义的某个Activity要通过隐式启动,在AndroidManifast.xm那么必须加上android.intent.category.DEFAULT,否则不起作用

除此之外,category的用途还有很多

比如做个桌面,按home键时启动自己做的应用

[html]  view plain  copy  print ?
  1. <activity  
  2.             android:name=".MainActivity"  
  3.             android:label="@string/app_name" >  
  4.             <intent-filter>  
  5.                 <action android:name="android.intent.action.MAIN" />  
  6.                 <category android:name="android.intent.category.LAUNCHER"/>  
  7.                 <category android:name="android.intent.category.HOME" />  
  8.             intent-filter>  
  9.         activity>  

在intent中是如何配置那三个匹配数据的呢,也简单一说

也就是说,在不直接指定要跳转的Activity的时候,为Intent提供一些相关的参数,让其自动去和AndroidManifest.xml中已有的Activity去匹配

IntentFilter在xml中的三個主要的参数:action,categary,data。

我们通过Intent的构造函数或者Intent提供的方法可以指定这个三个参数:    


[java]  view plain  copy  print ?
  1. intent.setAction(action);intent.setData(data);intent.addCategory(category);  
  2. intent.setAction(action);  
  3. intent.setData(data);  
  4. intent.addCategory(category);  

博客:http://blog.csdn.net/jason0539(转载请说明出处)

更多相关文章

  1. 解决Android编译时无法匹配到AVD的问题
  2. android.源码启动模拟器
  3. Android(安卓)SDK4.2 (API17) 开发环境的搭建
  4. android中的category静态值
  5. Android(安卓)- Linkify 详解
  6. Android(安卓)activity四种启动模式完全解析
  7. Android(安卓)Studio 安装No JVM Installation found. Please in
  8. android viewFlipper 使用
  9. menu.addIntentOptions 添加动态菜单详解

随机推荐

  1. Android系统架构5层
  2. 华章IT图书书讯(2011年第6期)
  3. Android Twitter分享,即Twitter授权Oauth
  4. 配置Android(安卓)SDK 开发环境
  5. Android UI目录
  6. Android 实现从网络上异步加载图像
  7. android layout_weight讲解
  8. android 中 application 的使用
  9. Drawable Mutations(Android Drawable 深
  10. Android Studio 解决错误 Could not find