Android的Intent

Android的Intent有两种:显示意图,隐式意图

一、显示意图:

   显示意图必须指定要激活的组件的完整包名和类名 (应用程序之间耦合在一起),一般激活自己应用的组件的时候 采用显示意图

显示意图选择的组件不许明确,例如我们找一个唯一确定的商品。

显示意图有三种添加包名和类名的方式,setClass是setClassName的升级版,第一参数context映射后可以得到包名,第二个参数class反射后得到完整类名

Intent intent = new Intent();

intent.setClass(this, XutilsDownLaodActivity.class);//context,class文件

intent.setClassName("com.zhangyan.test", "com.zhangyan.test.IntentActivity"); //完整包名,完整类名

intent.setClassName(this, "com.zhangyan.test.IntentActivity");//context,完整类名


二、隐式意图:

隐式意图只需要指定要动作和数据就可以 ( 好处应用程序之间没有耦合),一般使用别人写的应用采用隐式意图, 不需要关心对方的包名和类名。

隐式意图选择的组件不许明确,例如我们说找一个价格在100-200,颜色白色等等条件的衣服,结果是不确定的。

如果有多个衣服满足查找条件,那么就显示多个商品。

 <activity android:name="com.zhangyan.test.IntentActivity">
            	<intent-filter>
            	    <action android:name="com.zhangayn.daren"/>
            	    <category android:name="android.intent.category.DEFAULT"/>
            	    <data android:mimeType="application/haoren"/>
            	    <data  android:scheme="daren"/>
            	</intent-filter>
  </activity>

如果在intent-filter设置了mimeType,那么不能同时设置data和type,不然会删除另一个的数据。

Intent intent = new Intent();
intent.setAction("com.zhangayn.daren");
intent.addCategory(Intent.CATEGORY_DEFAULT);
//intent.setData(Uri.parse("daren:张三"));
//intent.setType("application/haoren");
intent.setDataAndType(Uri.parse("daren:张三"), "application/haoren");
startActivity(intent);



你可能感兴趣的:(android)