Android的Intent分为两大类,显性的(Explicit )的和隐性的(Implicit)。
显性的很简单就是我们常用的Activit跳转,他指明了从一个Activity跳转到另一个。
在SecondActivity这个配置中有一个intent-filter,其中它定义了action的名称。所谓的隐性Intent就是靠这个action的名称来传递。
代码如下:
[代码] 显式
1
Intent i = new Intent(this,AnotherActivity.class);
2
startActivity(i);
[代码] Main.java
01
import android.app.Activity;
02
import android.content.Intent;
03
import android.net.Uri;
04
import android.os.Bundle;
05
06
public class Main extends Activity {
07
private final String mapSearchIntent = "com.decarta.mapsearch.intent.action.SEARCH";
08
09
/** Called when the activity is first created. */
10
11
@Override
12
public void onCreate(Bundle savedInstanceState) {
13
super.onCreate(savedInstanceState);
14
setContentView(R.layout.main);
15
Uri mapUri = Uri.parse("geo:39.906033,116.397700");
16
Intent i = new Intent(mapSearchIntent, mapUri);
17
i.setData(mapUri);
18
startActivity(i);
19
}
20
}
[代码] SecondActivity.java
01
import android.app.Activity;
02
import android.content.Intent;
03
import android.net.Uri;
04
import android.os.Bundle;
05
06
/**
07
* @author Tony Shen
08
*/
09
10
public class SecondActivity extends Activity{
11
private Uri data;
12
private String action;
13
14
/** Called when the activity is first created. */
15
16
@Override
17
public void onCreate(Bundle savedInstanceState) {
18
super.onCreate(savedInstanceState);
19
Intent intent = getIntent();
20
if (intent.getAction() != null)
21
action = intent.getAction();
22
if (intent.getData()!=null)
23
data = intent.getData();
24
if (action.equals("com.decarta.mapsearch.intent.action.SEARCH")) {
25
Intent i = new Intent(Intent.ACTION_VIEW, data);
26
startActivity(i);
27
}
28
}
29
}
[代码] [XML]代码
01
<application android:icon="@drawable/icon" android:label="@string/app_name">
02
<activity android:name=".Main" android:label="@string/app_name">
03
<intent-filter>
04
<action android:name="android.intent.action.MAIN" />
05
<category android:name="android.intent.category.LAUNCHER" />
06
</intent-filter>
07
</activity>
08
<activity android:name=".SecondActivity">
09
<intent-filter>
10
<action android:name="com.decarta.mapsearch.intent.action.SEARCH" />
11
<category android:name="android.intent.category.DEFAULT" />
12
<data android:scheme="geo" />
13
</intent-filter>
14
</activity>
15
</application>
16
<application android:icon="@drawable/icon" android:label="@string/app_name">
17
<activity android:name=".Main" android:label="@string/app_name">
18
<intent-filter>
19
<action android:name="android.intent.action.MAIN" />
20
<category android:name="android.intent.category.LAUNCHER" />
21
</intent-filter>
22
</activity>
23
24
<activity android:name=".SecondActivity">
25
<intent-filter>
26
<action android:name="com.decarta.mapsearch.intent.action.SEARCH" />
27
<category android:name="android.intent.category.DEFAULT" />
28
<data android:scheme="geo" />
29
</intent-filter>
30
</activity>
31
</application>