1.隐式intent啟動活動
活動在AndroidManifest.xml中注冊時,如果想要能響應隐式Intent,可以添加<intent-filter>來指明目前activity可以響應的action和category,data
<activity android:name=".SecondActivity" android:label="SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="com.example.activitytest.MY_CATEGORY" />
</intent-filter>
</activity>
上述代碼:<action>标簽指定這個activity可以響應ACTION_START這個action,
<category>指定activity響應MY_CATEGORY這個category,
一個activity中可以設定多個action、多個category、多個data進行組合,這樣可以與多個Intent比對(當一個Activity中有多個Intent進行比對的時候,建議使用多個intent-filter與Intent進行比對)
使用隐式Intent時,Intent中傳入action和category,交給系統去搜尋有沒有比對的action和category,當一個activity的action和category完全比對時,就能啟動這個activity。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this,"點選",Toast.LENGTH_SHORT).show();
// Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
//隐式
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
//調用系統浏覽器浏覽網頁
// Intent intent = new Intent(Intent.ACTION_VIEW);
// intent.setData(Uri.parse("http://wwww.baidu.com"));
startActivity(intent);
}
});
一個Intent中隻能指定一個action,可以有多個category多個data,有多個activity比對時,Android會全部列出,可以進行選擇。
2.隐式Intent中action、category屬性
action:用來指定activity可以完成哪些動作,系統中定義了很多常用的動作
ACTION_MAIN:Android Application的入口,将目前activity設定為主界面。
ACTION_VIEW:系統根據不同的Data類型,通過已注冊的對應Application顯示資料。
ACTION_EDIT:系統根據不同的Data類型,通過已注冊的對應Application編輯示資料。
ACTION_DIAL:打開系統預設的撥号程式,如果Data中設定了電話号碼,則自動在撥号程式中輸入此号碼。
ACTION_CALL:直接呼叫Data中所帶的号碼。
ACTION_ANSWER:接聽來電。
ACTION_SEND:由使用者指定發送方式進行資料發送操作。
如果<intent-filter>中沒有指定action,則任何的Intent請求都不能和這條<intent-filter>比對;
如果Intent中沒有指定action,則隻要<intent-filter>中指定了action就能比對(其他條件也比對的情況下),即預設可以比對所有的action。
category:指定目前動作(Action)被執行的環境,即這個activity在哪個環境中才能被激活。當不屬于這個環境時,不能被激活。
CATEGORY_DEFAULT:預設的執行方式,所有Intent都可以激活它
CATEGORY_LAUNCHER:和ACTION_MAIN配合使用,用于設定主activity。
CATEGORY_HOME:設定該元件為Home Activity。
CATEGORY_BROWSABLE:設定該元件可以使用浏覽器啟動。
CATEGORY_GADGET:設定該元件可以内嵌到另外的Activity中。