知識點:
繼續昨天的Intents 和 Intent Filters的學習
組成一個Intent(Building an Intent):
Intent 對象攜帶信息(例如明確的組件名或應該接收intent的組件種類(intent category)),Android系統使用這些
信息決定開啟哪個組件。還攜帶了接收的組件使用的信息,為了完全的執行功能。
Intent包含的基本信息有以下幾種:
1.組件名
復制代碼
1 //1.組件名(Component name)
2 //目標組件的完全限制類名(fully qualified class name),包括app的包名。
3 // 例如com.johntsai.SecondActivity
4 //我們可以使用以下方法設置組件名
5 setComponent()
6 setClass()
7 setClassName()
8 //或者是Intent構造器
復制代碼
2.功能
復制代碼
1 //2.功能,活動(Action)
2 //指定一般要執行的功能或者活動的字符串
3 //我們可以指定Intent的action,使用以下方法
4
5 setAction()
6 //或是Intent構造器
7 //如果我們構造自己的action,必須要包括我們app的包名作為前綴
8 //例如:
9 static final String ACTION_TIMETRAVEL
10 ="com.johntsai.action.TIMETRAVEL";
復制代碼
3.數據
復制代碼
1 //3.數據(Data)
2 //URI(Uri對象)引用數據或MIME類型的數據
3 //提供的data的類型一般由intent的action決定
4 //例如action是ACTION_EDIT,那麼data就應該包含可編輯的文檔的URI
5 //僅設置data URI
6 setData()
7 //僅設置MIME類型
8 setType()
9 //兩者都設置
10 setDataAndType()
11 //提醒:如果你想要設置兩者2,不能調用setData()和setType(),因為它們會使對方的數值無效。一般是使用setDataAndType()。
復制代碼
4.種類
1 //4.種類(Category)
2 //包含關於哪種組件應該處理Intent的附加信息的字符串
3 //一個intent可以有任意多個category說明
4 //指定category
5 addCategory()
組件名、功能、數據、種類(component name,action,date,category)代表了一個Intent最典型的特點,
通過讀取這些屬性,Android系統能決定開啟哪個組件。
5.附加部分
1 //5.附加部分(Extras)
2 //攜帶需要完成要求功能的附加信息的鍵值對(Key-value paris)
3 //聲明我們自己的附加部分(我們的app的Intent接收)確保包含我們的應用包名作為前綴
4 //例如:
5 static final String EXTRA_GIGAWATTS = "com.johntsai.EXTRA_GIGAWATTS";
6.標志
1 //6.標志(Flags)
2 //Flags指導Android系統怎樣開啟Activity(例如Activity屬於哪個task)以及開啟後怎樣處理它(例如,它是否屬於最近的Activity列表中)
3 setFlags();