一:显示意图
显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
例如通过意图跳转到另一个Activity的两种方式:
1:第一种方式跳转的显式意图
- Intent intent = new Intent();
- intent.setClassName("待启动Activity的包名","待启动Activity的完整类路径")
- intent.putExtra("name",name);
- startActivity(intent);
2:第二种方式跳转的显式意图
- Intent intent = new Intent(context,AnotherActivity.class);
- intent.putExtra("name",name);
- startActivity(intent);
另一个Activity中:
- Intent intent1=getIntent();
- intent.getStringExtra("name");
二:隐式意图
隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
例如给某个Activity定义隐式意图:在清单文件中的该Activity标签中创建意图过滤器:
- <intent-filter>
- <action android:name="android.intent.yinsiyitu.action"/>
- <category android:name="android.intent.category.DEFAULT"/>
- <data android:mimeType="application/person"/>
- <data android:scheme="jianren" android:host="www.ggl.com"/>
- </intent-filter>
另一个Activity通过上面的Activity定义的意图过滤器访问上面的Activity:
- Intent intent = new Intent();
- intent.setAction("android:intent.yinsiyitu.action");
- intent.addCategory(Intent.CATEGORY_DEFAULT);
-
-
-
- intent.setDataAndType(Uri.parse("jianren://www.ggl.com"),"application/person");
-
- startActivity(intent);