在manifest檔案中使用permission標籤定義自己的許可權:
<?xml version="1.0" encoding="utf-8"?>
...
解釋下各個屬性:
android將許可權分為若干個保護級別,normal, dangerous, signature等。normal就是正常許可權,該許可權並不會給使用者或者裝置的隱私帶來風險;dangerous就是危險許可權,該級別的許可權通常會給使用者的資料或裝置的隱私帶來風險;signature指的是,只有相同簽名的應用才能使用該許可權。更多的介紹可以參考protectionlevel。
自定義許可權一般用於暴露出去的元件,提高安全性。android允許乙個應用(客戶端)呼叫另乙個應用(服務端)的元件。那麼作為服務端的應用就得暴露相應的元件,客戶端應用才能訪問。當然,在暴露的時候,許可權是非必須的,如果暴露的元件沒有許可權的話,那麼任何的其他應用都可以來呼叫該元件;如果該元件申請了許可權,那麼只有擁有該許可權的應用才能呼叫該元件。
exported屬性就是代表是否暴露。該例子並沒有要求呼叫者需要申請許可權,也就是說,任何的應用就可以呼叫才元件。如果每個應用都可以呼叫我們的元件的話,顯然是不安全的,我們希望只有使用了我們的許可權的應用,才能呼叫我們暴露的元件,我們可以在activity中加入permission屬性。
intent intent = new intent();
intent.setclassname("com.bright.permission", "com.bright.permission.testa_activity");
startactivity(intent);
除了上面的方式,還可以通過intent-filter隱式啟動:
intent intent = new intent();
intent.setaction("com.bright.permission.action.test");
startactivity(intent);
3.1、兩個應用宣告了相同的許可權
3.2、和應用安裝順序的關係。
3.3、許可權的獲取以及版本相容
android6.0引入了動態許可權,這個大家都知道了。前面說到的自定義的許可權的安全級別android:protectionlevel會影響許可權在android6.0+系統的使用
參考 有更詳細講解
Android使用自定義許可權
自定義許可權一般用於某個活動的訪問保護,只有擁有該許可權的客戶端才可以訪問該活動,通常自己客戶端在自定義許可權時已經預設擁有了許可權,而其他客戶端如需要訪問該活動,則必須加上該活動需要的許可權,許可權宣告在全域性上。當前客戶端的androidmanifest檔案 其他客戶端的androidmanif...
Android 自定義許可權
在android系統的安全模型中,應用程式在預設的情況下不可以執行任何對其他應用程式,系統或者使用者帶來負面影響的操作。如果應用需要執行某些操作,就需要宣告使用這個操作對應的許可權。在manifest檔案中 新增標記 android 系統提供了一系列這樣的許可權,具體可以檢視android 許可權,...
Android 自定義許可權
在android系統的安全模型中,應用程式在預設的情況下不可以執行任何對其他應用程式,系統或者使用者帶來負面影響的操作。如果應用需要執行某些操作,就需要宣告使用這個操作對應的許可權。在manifest檔案中 新增標記 android 系統提供了一系列這樣的許可權,具體可以檢視 android 許可權...