Intent主要有三個基本的使用用例:
1.啟動一個Activity
2.啟動一個Service
3.發(fā)送一個broadcast
Intent 類型
1.Explicit intents
? ? 在使用上,根據(jù)知道的類名去啟動一個Activity或Service。eg.更具用戶的響應去打開activity,開啟一個服務在后臺下載文件。
2.Implicit intents
? ? 不是制定一個明確的組件,而是聲明一個通用的執(zhí)行動作,它允許一個組件從另一個應用程序來處理它。eg.如果你想在地圖上顯示用戶的位置,你可以用隱示意圖顯示請求一個其他可以用的應用顯示具體位置。
? ? 如果啟動一個顯示意圖,系統(tǒng)會明確的打開,啟動。如果啟動一個隱示意圖,需要在可以啟動的組建在 Manifest 中添加 intent filters 。當啟動時,系統(tǒng)會從應用中找出 能匹配的意圖。如果有多個,用戶需要選擇打開。
注:在android5.0以后,啟動一個服務必須是Explicit intents。
以下 form: http://liangruijun.blog.51cto.com/3061169/634411/
1.Intent的Action屬性
Action是指Intent要完成的動作,是一個字符串常量。
2.Intent的Data屬性
Intent的Data屬性是執(zhí)行動作的URI和MIME類型,不同的Action有不同的Data數(shù)據(jù)指定。比如:ACTION_EDIT Action應該和要編輯的文檔URI Data匹配,ACTION_VIEW應用應該和要顯示的URI匹配。
3.Intent的Category屬性
Intent中的Category屬性是一個執(zhí)行動作Action的附加信息。比如:CATEGORY_HOME則表示放回到Home界面,ALTERNATIVE_CATEGORY表示當前的Intent是一系列的可選動作中的一個。
4.Intent的Type屬性
Intent的Type屬性顯式指定Intent的數(shù)據(jù)類型(MIME)。一般Intent的數(shù)據(jù)類型能夠根據(jù)數(shù)據(jù)本身進行判定,但是通過設(shè)置這個屬性,可以強制采用顯式指定的類型而不再進行推導。
5.Intent的Compent屬性
Intent的Compent屬性指定Intent的的目標組件的類名稱。通常 Android會根據(jù)Intent 中包含的其它屬性的信息,比如action、data/type、category進行查找,最終找到一個與之匹配的目標組件。但是,如果 component這個屬性有指定的話,將直接使用它指定的組件,而不再執(zhí)行上述查找過程。指定了這個屬性以后,Intent的其它所有屬性都是可選的。
6.Intent的Extra屬性
Intent的Extra屬性是添加一些組件的附加信息。比如,如果我們要通過一個Activity來發(fā)送一個Email,就可以通過Extra屬性來添加subject和body。
接收一個隱示意圖:
接收意圖的組件需要在Manifest中相應組件位置添加<inter-filer>.