Custom 權限
Intent「意圖」,可以用來向另一個應用程式元件(component)要求動作的傳訊物件。
系統會尋找對應的intent-filter,若有多個符合,會跳出選單讓使用者選擇
那本章的重點「Custom權限」是什麼呢?在這之前,先來了解一下Android權限的基本概念。
Android權限的性質:
Android應用程式運行在Sandbox,預設只能存取自身檔案和受限的系統服務,如果要接觸系統和其他應用程式,必須額外要求存取的權利(access rights),也就是俗稱的權限。權限的要求必須定義在AndroidManifest檔案裡,系統在安裝應用程式時會檢查權限要求的清單,並且經由Package Manager將權限發放至每個應用程式。應用程式的資料被存放在/data/system/packages.xml檔案裡面,包含安裝路徑、版本、簽章憑證和權限清單。
Android權限的種類:
Custom權限:
客製權限可以被系統或使用者安裝的應用程式定義,主要目的是讓應用程式用來限制「保護」不同的元件,限制其他應用程式可以訪問特定元件的權利!
自定義權限的方法如下所示,必須定義在AndroidManifest.xml檔案。
接著來測試一下Custom權限的效果,測試環境為Android 5.1.1,測試條件為應用程式A透過startService()傳送Intent要求至應用程式B,來看看不同的設定會有怎樣的情況發生,測試結果如下圖所示。
若應用程式A沒有宣告應用程式B所定義的Custom權限,則出現錯誤訊息!
若應用程式A已宣告應用程式B所定義的Custom權限,但簽章與應用程式B不同,一樣會出現錯誤,因為我將Custom權限的"protectionLevel"設定為"signature"。
以上為泰勞實際測試結果,若有錯誤,煩請不吝指教!
例如:
將Intent傳送至startActivity()來啟動Activity
將Intent傳送至startService()來啟動Service
將Intent傳送至sendBroadcast(),向其他應用程式傳送廣播
Intent使用startService()發送請求
#Android5.0之後必須使用明確意圖

系統會尋找對應的intent-filter,若有多個符合,會跳出選單讓使用者選擇

那本章的重點「Custom權限」是什麼呢?在這之前,先來了解一下Android權限的基本概念。
Android權限的性質:
Android應用程式運行在Sandbox,預設只能存取自身檔案和受限的系統服務,如果要接觸系統和其他應用程式,必須額外要求存取的權利(access rights),也就是俗稱的權限。權限的要求必須定義在AndroidManifest檔案裡,系統在安裝應用程式時會檢查權限要求的清單,並且經由Package Manager將權限發放至每個應用程式。應用程式的資料被存放在/data/system/packages.xml檔案裡面,包含安裝路徑、版本、簽章憑證和權限清單。

權限分成兩種和四個保護層級(Protection-levels),兩種分別為內建權限(Built-in)與客製權限(Custom),保護層級則根據其潛在的風險分為以下四個:一般(Normal)、危險(Dangerous)、簽章(Signature)、簽章或系統(SignatureOrSystem)。

接著來測試一下Custom權限的效果,測試環境為Android 5.1.1,測試條件為應用程式A透過startService()傳送Intent要求至應用程式B,來看看不同的設定會有怎樣的情況發生,測試結果如下圖所示。

若應用程式A沒有宣告應用程式B所定義的Custom權限,則出現錯誤訊息!

若應用程式A已宣告應用程式B所定義的Custom權限,但簽章與應用程式B不同,一樣會出現錯誤,因為我將Custom權限的"protectionLevel"設定為"signature"。

以上為泰勞實際測試結果,若有錯誤,煩請不吝指教!
留言
張貼留言