相比於顯式Intent,隱式Intent 則含蓄了許多,它並不明確指出咱們想要啓動哪個活動,而是指定了一系列更爲抽象的action 和category 等信息,而後交由系統去分析這個Intent,並幫咱們找出合適的活動去啓動。java
什麼叫作合適的活動呢?簡單來講就是能夠響應咱們這個隱式Intent 的活動,那麼目前SecondActivity 能夠響應什麼樣的隱式Intent 呢?額,如今好像還什麼都響應不了,不過很快就會有了。android
第一步 經過在<activity>標籤下配置<intent-filter>的內容,能夠指定當前活動可以響應的action和category,打開AndroidManifest.xml,添加以下代碼:app
- <activity
- android:name="cn.com.qiang.buttonjump.SecondActivity">
- <intent-filter >
- <action android:name="jump"/>
- <category android:name="android.intent.category.DEFAULT"/>
- </intent-filter>
- </activity>
在<action> 標籤中咱們指明瞭當前活動能夠響應com.example.activitytest.ACTION_START 這個action,而<category>標籤則包含了一些附加信息,更精確地指明瞭當前的活動可以響應的Intent 中還可能帶有的category。只有<action>和<category>中的內容同時可以匹配上Intent 中指定的action 和category 時,這個活動才能響應該Intent。ide
第二步 在MainAcivity 中調用setAction 及 addCategory 則能夠實現隱式跳轉spa
- button1.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Intent intent = new Intent();
- intent.setAction("jump");
- intent.addCategory("android.intent.category.DEFAULT");
-
- startActivity(intent);
- }
- });
從新運行程序,在MainActivity 的界面點擊一下按鈕,你一樣成功啓動SecondActivity了。不一樣的是,此次你是使用了隱式Intent 的方式來啓動的,說明咱們在<activity>標籤下配置的action 和category 的內容已經生效了!.net
下面是具體代碼:xml
MainActivity 部分:blog
- package cn.com.qiang.buttonjump;
-
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.Intent;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
-
- public class MainActivity extends Activity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- Button button1 = (Button)findViewById(R.id.button1);
- button1.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Intent intent = new Intent();
- intent.setAction("jump");
- intent.addCategory("android.intent.category.DEFAULT");
-
- startActivity(intent);
- }
- });
- }
- }
AndroidManfest.xml 部分ip
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="cn.com.qiang.buttonjump"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk
- android:minSdkVersion="8"
- android:targetSdkVersion="17" />
-
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme">
- <activity
- android:name="cn.com.qiang.buttonjump.MainActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
-
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
- <activity
- android:name="cn.com.qiang.buttonjump.SecondActivity">
- <intent-filter >
- <action android:name="jump"/>
- <category android:name="android.intent.category.DEFAULT"/>
- </intent-filter>
- </activity>
- </application>
-
- </manifest>