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