Intent 訊息傳遞

2021-06-22 12:59:55 字數 1642 閱讀 3126

android為了遮蔽程序的概念,利用不同的元件[activity、service]來表示程序之間的通訊!

元件間通訊的核心機制是intent,通過intent可以開啟乙個activity或service,不論這個activity或service是屬於當前應用還是其它應用的!

一、intent概念

intent包含兩部分:

1、目的[action]--要往**去

2、內容[category、data]--路上帶了些啥,區分性資料或內容性資料

intent型別:

1、顯式--直接指定訊息目的地,只適合同一程序內的不同元件之間通訊

new intent(this,target.class)

2、隱式--androidmainifest.xml中註冊,一般用於跨程序通訊

new intent(string action)

二、實現-intent簡單程序間通訊

顯式的intent較為簡單!

如何實現隱式intent呢?

在androidmanifest.xml檔案中定義

說明:

1、乙個包括:

零個或多個

它主要是作為匹配的標準,能否匹配成功由、、三個tag共同決定的。

2、乙個包括:

乙個或多個

零個或多個

指定的分類特徵

eg:--說明該是該project執行的第乙個介面

--說明該可以作為launcher的,即系統操作介面

--預設情況

零個或乙個

-- 指定攜帶的資料的型別,使用mime型別描述方式來描述

eg:在查詢contentprovider時,可以使用

查詢上來的資料是多個記錄

查詢上來的資料是單個記錄

如上設定,要重寫sqliteopenhelper的gettype(uri uri)方法

eg:@override

public string gettype(uri uri) }

資料的uri由scheme(協議),host,port,path四部分:scheme://host:port/path

3、乙個intent對應多種匹配結果的處理說明

乙個intent有多個可匹配的處理元件,系統如何處理?

分響應訊息的元件型別:

1)如果是service那麼這些service都可以啟動並處理訊息。

2)如果是activity則會彈出乙個對話方塊讓使用者進行選擇。

4、安全性問題

如果不同程序間的元件可以通過隱式訊息互相通訊,那程式不是可以輕易呼叫到其他的程式或者系統中的一些敏感程式的元件,這樣會不會很不安全呢?

其實android在安全方面有乙個統一,完備和輕便的安全策略模型。

簡單一點說就是:許可權設定問題

我們可以自己定義permission,然後在需要的元件處設定該permission,那麼使用者要想該元件,必須要配置該permission,否則訪問失敗的!

eg:

1、定義permission

2、配置permission

3、使用permission

Intent傳遞物件

serializable即序列化,將物件轉化成可儲存與傳輸狀態。public class student implements serializable public string getid public void setname name public string getname public...

Intent 傳遞資料

intent 可傳遞的資料型別 可傳輸的資料型別 a.基本資料型別 陣列 b.string 陣列 c.bundle map d.serializable bean e.parcelable 放在記憶體乙個共享空間裡 基本型別 intent intent new intent this,otherac...

Intent 傳遞 陣列

最近 寫個小東西的時候 需要傳遞 乙個陣列個給下個頁面,用intent 直接傳遞不過去。看起原始碼發現想傳遞陣列必須先序列化物件,話不多說直接上 list list newarraylist 這個是我要傳遞的集合。intent intent newintent detail listactivity...