例子:
A:身高170
B:身高175
C:身高180
显式意图:明确指定跳转到具体的哪一个Activity,比如直接说A。一般用于自定义的Activity
隐式意图:没有明确指定,根据填写的条件去需找适合该条件的Activity,比如说身高是175的那个人。一般用于跳转到系统的或者第三方的Activity
1、显式意图
(1)开启方式一,最常用:
//显式意图,方式一
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
(2)开启方式二
//显式意图,方式二
Intent intent = new Intent();
intent.setClassName(getPackageName(), "com.example.intentdemo.SecondActivity");
startActivity(intent);
2、隐式意图
(1)配置SecondActivity需要的条件
<activity android:name=".SecondActivity" >
<intent-filter>
<!-- 指定动作 -->
<action android:name="test.action" />
<!-- 指定category,这个默认属性一般都需要 -->
<category android:name="android.intent.category.DEFAULT" />
<!-- 指定category,自定义的 -->
<category android:name="test.category" />
<!-- data 主机名是hello.world
协议是zhang
类型是mTest/* *代表通配符 -->
<data
android:host="hello.world"
android:mimeType="mTest/*"
android:scheme="zhang" />
</intent-filter>
</activity>
(2)指定跳转
//隐式意图
Intent intent = new Intent();
intent.setAction("test.action");
intent.addCategory("test.category");
//如果配置文件里的<data />有mimeType和其他数据,那么就要setDataAndType方法而不能分开设置
//setData和setType
intent.setDataAndType(Uri.parse("zhang://hello.world/haha"), "mTest/xixi");
startActivity(intent);
3、使用隐式意图,跳转到系统的应用。打开浏览器
//打开浏览器
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.BROWSABLE");
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);