Android下的intent機制

2021-06-28 13:33:39 字數 3146 閱讀 8224

在android中提供了intent機制來協助應用間的互動與通訊,intent負責對應用中一次操作的動作、動作涉及資料、附加資料進行描述,android則根據此intent的描述,負責找到對應的元件,將 intent傳遞給呼叫的元件,並完成元件的呼叫。intent不僅可用於應用程式之間,也可用於應用程式內部的activity/service/broadcast receiver之間的互動

工作原理:你的程式向android傳送乙個inent請求,android會根據intent的內容查詢各元件註冊時宣告的intentfilter來響應。

詳細表現分為二類

顯式(explicit intent)和隱式(implicit intent)

顯式意圖:明確指出了目標元件名稱的定包名和類名:

①如果需要開啟的activity在本應用程式中,可以通過構造方法傳入component

顯式:intent intent = new intent(this, secondactivity.class);
隱式:intent intent = new intent(對應的action);
startactivity(intent);

②如果不在本應用程式中可以通過指定包名和包名對應的類名

intent intent = new intent();

intent.setclsssname(包名,包名+類名);

startactivity(intent);

顯式意圖的缺陷:如果應用程式公升級,包名改變,容易造成2個應用程式的耦合(顯示意圖的應用依賴於要開啟的應用名)

隱式意圖:好處元件間解耦合

原理:隱式不明確指定啟動哪個activity,而是設定action、data、category,讓系統來篩選出合適的activity。篩選的條件是根據應用程式註冊的

intentfilter中的內容:

1 action:要執行的動作

2 catergory:

(必須)

:動作型別,一般是預設的,如果是導航\機頂盒則另選

3 data:執行動作要操作的資料

data元素指定了希望接受的intent請求的資料uri和資料型別,uri被分成三部分來進行匹配:scheme、authority和path。其中,用setdata()設定的intent請求的uri資料型別和scheme必須與intentfilter中所指定的一致。若intentfilter中還指定了authority或path,它們也需要相匹配才會通過測試。如:

①指定運算元據型別text/plain

"/>如text/plain ;video/3gpp 

這時,需要在intent中設定對應的資料型別:intent.settype("text/plain");不然不能通過測試

②指定字首"/> 可以寫入要撥打的**,訪問的**等,如:intent.setdata(uri.parse(

""));5、extras:(附件資訊):附件資訊。可用於開啟新的介面傳遞引數

撥號介面註冊的intent-filter

撥打普通**和網路**

intent intent = new intent();//意圖

intent.setaction(intent.action_call);//設定動作intent.setdata(uri.parse("tel:"+110));//tel為引數字首,如果sip則是撥打網路**

startactivity(intent);
使用intent來傳遞資料

mainactivity

intent intent = new

intent(intentdemo.

this

, other.

class

);  

// 在intent中傳遞資料

intent.putextra("name"

, "ahuier"

);  

intent.putextra("age"

, 22

);  

intent.putextra("address"

, "xiamen"

);  

// 啟動intent

startactivity(intent);

secondactivity

intent intent = getintent();  

intage = intent.getintextra(

"age", 0

);  

string name = intent.getstringextra("name"

);  

string address = intent.getstringextra("address");

Android的元件通訊 intent

元件要通過intent宣告自己的條件,一般通過元件的元素來實現.intent可以啟動乙個activity,可以啟動乙個service,也可以發起乙個廣播 broadcast intent由以下幾個部分組成 動作 action 資料 data 分類 category 型別 type 元件 compon...

Android 通訊的橋梁 Intent

雖然比較簡單,但還是把主要內容提一下。intent的使用 intent可以啟動乙個activity,也可以啟動乙個service,還可以發起乙個廣播 activity startactivity startactivityforresult service startservice bindserv...

Android學習 Intent的作用

android 中的intent 有兩大作用。一 用來啟動其他新的 activity 二 作為傳遞資料和事件的橋梁。傳遞資料時的 有兩種 第一種是 intent intent new intent currentactivity.this otheractivity.class intent.put...