Intent传送分为显示和隐式传递
显示Intent传递
-
Intent intent =
new Intent(MainActivity.
this,SecondActivity.class);
-
startActivity(intent);
这个非常简单,只需要传入两个相关联上下文。
第一个:MainActivity.this就是指定当前的Activity
第二个:SecondActivity.class就是你要跳转的Activity
是不是非常简单???(前提得要在AndroidManifest进行Activity注册).
隐式Intent传递
隐式传递相对于显示Intent较委婉,不过也非常简单。
在AdnroidManifest.xml文件里
-
<activity android:name=
".MainActivity">
-
<intent-filter>
-
<action android:name=
"android.intent.action.MAIN"/>
-
<category android:name=
"android.intent.category.LAUNCHER" />
-
</intent-filter>
-
</activity>
-
-
<activity android:name=
".SecondActivity">
-
<intent-filter>
-
<action android:name=
"com.example.SECOND_ACTIVITY"/>
-
<category android:name=
"android.intent.category.DEFAULT"></category>
-
</intent-filter>
-
</activity>
在<intent-filter>标签里有非常重要的两个<action>和<category>两标签,这两个是必须同时存在的。
<action>指明了我们当前需要响应的activiity
<category>是附加信息
-
button.setOnClickListener(
new View.OnClickListener() {
-
@Override
-
public void onClick(View v) {
-
Intent intent =
new Intent(
"com.example.SECOND_ACTIVITY");
-
startActivity(intent);
-
}
-
});
所以,当我们使用隐式传递时,只需要传递SecondActiviity里的<action>里的com.example.SECOND_ACTIVITY(这个可以自己随便取)。
<category android:name="android.intent.category.DEFAULT"></category>
表示当前的category是默认的,在使用IIntent时就会自动调用。
重点:每个Intent只能指定一个action,可以有多个actegory.
-
Intent intent =
new Intent(
"com.example.SECOND_ACTIVITY");
-
intent.addCategory(
"second");
-
startActivity(intent);
在这里添加了intent.addCategory("second");必须在AndroidManifest.xml里添加对应的category,如下:
-
<activity android:name=
".SecondActivity">
-
<intent-filter>
-
<action android:name=
"com.example.SECOND_ACTIVITY"/>
-
<category android:name=
"android.intent.category.DEFAULT"></category>
-
<category android:name=
"second"/>
-
</intent-filter>
-
</activity>
还有很多隐式Intent用法:比如
-
Intent intent =
new Intent(Intent.ACTION_VIEW);
-
intent.setData(Uri.parse(
"http://www.baidu.com"));
-
startActivity(intent);
Intent.ACTION_VIEW是系统内置的。就可以打开自己手机浏览器,进行访问。
Intent传送分为显示和隐式传递
显示Intent传递
-
Intent intent =
new Intent(MainActivity.
this,SecondActivity.class);
-
startActivity(intent);
这个非常简单,只需要传入两个相关联上下文。
第一个:MainActivity.this就是指定当前的Activity
第二个:SecondActivity.class就是你要跳转的Activity
是不是非常简单???(前提得要在AndroidManifest进行Activity注册).
隐式Intent传递
隐式传递相对于显示Intent较委婉,不过也非常简单。
在AdnroidManifest.xml文件里
-
<activity android:name=
".MainActivity">
-
<intent-filter>
-
<action android:name=
"android.intent.action.MAIN"/>
-
<category android:name=
"android.intent.category.LAUNCHER" />
-
</intent-filter>
-
</activity>
-
-
<activity android:name=
".SecondActivity">
-
<intent-filter>
-
<action android:name=
"com.example.SECOND_ACTIVITY"/>
-
<category android:name=
"android.intent.category.DEFAULT"></category>
-
</intent-filter>
-
</activity>
在<intent-filter>标签里有非常重要的两个<action>和<category>两标签,这两个是必须同时存在的。
<action>指明了我们当前需要响应的activiity
<category>是附加信息
-
button.setOnClickListener(
new View.OnClickListener() {
-
@Override
-
public void onClick(View v) {
-
Intent intent =
new Intent(
"com.example.SECOND_ACTIVITY");
-
startActivity(intent);
-
}
-
});
所以,当我们使用隐式传递时,只需要传递SecondActiviity里的<action>里的com.example.SECOND_ACTIVITY(这个可以自己随便取)。
<category android:name="android.intent.category.DEFAULT"></category>
表示当前的category是默认的,在使用IIntent时就会自动调用。
重点:每个Intent只能指定一个action,可以有多个actegory.
-
Intent intent =
new Intent(
"com.example.SECOND_ACTIVITY");
-
intent.addCategory(
"second");
-
startActivity(intent);
在这里添加了intent.addCategory("second");必须在AndroidManifest.xml里添加对应的category,如下:
-
<activity android:name=
".SecondActivity">
-
<intent-filter>
-
<action android:name=
"com.example.SECOND_ACTIVITY"/>
-
<category android:name=
"android.intent.category.DEFAULT"></category>
-
<category android:name=
"second"/>
-
</intent-filter>
-
</activity>
还有很多隐式Intent用法:比如
-
Intent intent =
new Intent(Intent.ACTION_VIEW);
-
intent.setData(Uri.parse(
"http://www.baidu.com"));
-
startActivity(intent);
Intent.ACTION_VIEW是系统内置的。就可以打开自己手机浏览器,进行访问。