Android的Intent

来源:互联网 发布:西岐网络我有上将 编辑:程序博客网 时间:2024/06/05 07:24

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);



0 0