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