android 自定義許可權

2021-08-09 05:19:45 字數 2254 閱讀 3107

本篇部落格介紹下android開發者如何自定義許可權,進而如何將自己的部分元件暴露。並介紹客戶端如何呼叫這些暴露的元件。

android允許我們使用permission標籤,在manifest檔案中定義屬於自己的許可權,乙個例子如下,

<?xml version="1.0" encoding="utf-8"?>

xmlns:android=""

android:name="paul.permission.test"

android:description="@string/permdesc_deadlyactivity"

android:permissiongroup="paul.permission-group.test"

android:protectionlevel="signature" />

...manifest>

對permission標籤的各個屬性大概說明一下,

1. name,該標籤就是許可權的名字啦。

2. description,該標籤就是許可權的介紹。

3. permissiongroup,指定該許可權的組。

4. protectionlevel,指定保護級別。

android將許可權分為若干個保護級別,normal, dangerous, signature等。normal就是正常許可權,該許可權並不會給使用者或者裝置的隱私帶來風險;dangerous就是危險許可權,該級別的許可權通常會給使用者的資料或裝置的隱私帶來風險;signature指的是,只有相同簽名的應用才能使用該許可權。更多的介紹可以參考protectionlevel。

還有一點重要的是,android不允許兩個不同的應用定義乙個相同名字的許可權(除非這兩個應用擁有相同的簽名),所以在命名的時候,需要注意哦。

我們知道,android允許乙個應用(客戶端)呼叫另乙個應用(服務端)的元件。那麼作為服務端的應用就得暴露相應的元件,客戶端應用才能訪問。當然,在暴露的時候,許可權是非必須的,如果暴露的元件沒有許可權的話,那麼任何的其他應用都可以來呼叫該元件;如果該元件申請了許可權,那麼只有擁有該許可權的應用才能呼叫該元件。

正常情況下,我們可以這樣來暴露自己的元件,以activity為例,

android:name=".privateactivity"

android:exported="true"

android:label="@string/title_activity_private"/>

exported屬性就是代表是否暴露。該例子並沒有要求呼叫者需要申請許可權,也就是說,任何的應用就可以呼叫才元件。

如果沒個應用都可以呼叫我們的元件的話,顯然是不安全的,我們希望只有使用了我們的許可權的應用,才能呼叫我們暴露的元件,我們可以在activity中加入permission屬性,如下,

android:name=".privateactivity"

android:exported="true"

android:label="@string/title_activity_private"

android:permission="paul.permission.test" />

這樣,我們就給該暴露的activity加入了許可權,只有申請了paul.permission.test許可權的應用,才能呼叫該activity。

在2中,我們介紹了,服務端應用如何將自己的元件暴露出去,並使用自定義的許可權保護該元件。本小節介紹如何編寫客戶端應用,訪問該暴露元件。

首先,由於暴露的元件是需要許可權的,我們需要在manifest檔案中申請該許可權,該許可權的使用和android提供的許可權的使用是一樣的,均為使用uses-permission標籤。

<?xml version="1.0" encoding="utf-8"?>

xmlns:android=""

android:name="paul.permission.test" />

...manifest>

然後,我們使用**來呼叫暴露的元件,以2中的activity為例,

intent intent = new intent();

startactivity(intent);

我們使用隱式intent來呼叫暴露的activity,注意setclassname的第乙個引數是完整的包名,第二個引數是完整的activity類名(包括包名)。

如果我們沒有申請相應的許可權,就呼叫需要許可權的暴露元件的話,會丟擲乙個沒有申請許可權的異常。

Android 自定義許可權

在android系統的安全模型中,應用程式在預設的情況下不可以執行任何對其他應用程式,系統或者使用者帶來負面影響的操作。如果應用需要執行某些操作,就需要宣告使用這個操作對應的許可權。在manifest檔案中 新增標記 android 系統提供了一系列這樣的許可權,具體可以檢視android 許可權,...

Android 自定義許可權

在android系統的安全模型中,應用程式在預設的情況下不可以執行任何對其他應用程式,系統或者使用者帶來負面影響的操作。如果應用需要執行某些操作,就需要宣告使用這個操作對應的許可權。在manifest檔案中 新增標記 android 系統提供了一系列這樣的許可權,具體可以檢視 android 許可權...

Android自定義許可權

在android系統的安全模型中,應用程式在預設的情況下不可以執行任何對其他應用程式 系統或者使用者帶來負面影響的操作。如果應用需要執行某些操作,就需要宣告使用這個操作對應的許可權。在manifest檔案中 新增標記 android 系統提供了一系列這樣的許可權,具體可以檢視 android 許可權...