Android permission許可權詳解

2021-10-05 03:18:03 字數 2095 閱讀 3641

許可權是一種安全機制。android許可權主要用於限制應用程式內部某些具有限制性特性的功能使用以及應用程式之間的元件訪問。在android開發中,基本上都會遇到聯網的需求,我們知道都需要加上聯網所需要的許可權:

根據此錯誤提示,一般情況下,在androidmanifest.xml中通過 uses-permission 增加上相應許可權即可。

一、android許可權列表:

那麼,android中有哪些受限制性訪問的特性呢?具體的特性對應所需要的許可權名稱又是什麼呢?具體可以在android官方文件中查的: 

需要注意的是,不同的許可權可能對應了不同的api等級,因此,可能會出現相容性問題。

二、android自定義許可權:

為了講清自定義許可權,先以不同的程式之間訪問activity增加許可權限制為例。假設應用程式a中有mainactivity,應用程式b中有aactivity和bactivity。現在想通過a中的mainactivity直接開啟b中的bactivity。

那麼,如果不考慮許可權,a中的mainactivity如何直接開啟b中的bactivity呢?一般,可以通過如下方式:

public class mainactivity extends activity

});}

}這段**很好理解,主要是通過intent中的setclass(string packagename, string classname)方法,需要注意的是此時需要寫上包的全名。同時,針對b中的bactivity需要在androidmanifest.xml檔案中進行如下配置:

一定要為activity中的屬性android:exported設定值為true,以表示可以被其他應用程式開啟。或者,也可以進行如下配置:

為activity設定乙個空的action  android:name屬性。

至此,我們還沒有用到自定義許可權。假設現在需要對外部應用程式直接開啟bactivity做些訪問性限制,為其增加乙個自定義許可權,這樣,只有在宣告了此自定義許可權的外部應用,才具有資格開啟bactivity。具體步驟如下:

1.既然是自定許可權,那麼首先得申明此許可權:

在b中的androidmanifest.xml中,一般是緊跟uses-sdk標籤後,通過permission標籤進行申明。

各屬性具體含義如下:

屬性    含義    是否必須

name     自定義的許可權名稱,需要遵循android許可權定義命名方案:*.permission.*     是

protectionlevel    

定義與許可權相關的"風險級別"。必須是以下值之一:

normal, dangerous, signature, signatureorsystem ,取決於保護級別,在確定是否授予許可權時,系統可能採取不同的操作。

normal 表示許可權是低風險的,不會對系統、使用者或其他應用程式造成危害;

dangerous 表示許可權是高風險的,系統將可能要求使用者輸入相關資訊,才會授予此許可權;

signature 表示只有當應用程式所用數字簽名與宣告引許可權的應用程式所用數字簽名相同時,才能將許可權授給它;

signatureorsystem 表示將許可權授給具有相同數字簽名的應用程式或android 包類。這一保護級別適和於非常特殊的情況,比如多個**商需要通過系統映像共享功能時

是permissiongroup    

可以將許可權放在乙個組中,但對於自定期義許可權,應該避免設定此屬性。如果確實希望設定此屬性,可能使用以下屬性代替:android.permisson-group.system_tools

否label    可使用它對許可權進行簡短描述    否

description    使用它提供對許可權用途和所保護物件的更有用的描述    否

icon    許可權可以與資源目錄以外的圖示相關聯 ( 比如@drawable/myicon)    否

2.當b中bactivity進行許可權限定時,需要對bactivity進行如下宣告:

3.此時外部應用a中的activity想直接開啟b中bactivity,則需要新增上相應許可權:

這就是activity自定義許可權的一般性流程。總體說來,當不同應用間activity receiver定義了許可權並進行了外部訪問許可權限定時,外部應用則必須具備此許可權才能直接訪問此activity receiver。

Android Permission 許可權詳解

許可權分為幾個保護級別。保護級別影響是否需要執行時許可權請求 normal permissions 正常許可權signature permissions 簽名許可權dangerous permissions 危險許可權 需要我們了解的是正常許可權和危險許可權。許可權組 許可權calendar rea...

vue router路由懶載入和許可權控制詳解

vue router路由懶載入 和許可權控制,今天剛好搞了乙個基於node token驗證的小demo 所以下面介紹下,路由懶載入 1 為什麼要使用路由懶載入呢 用vue.js寫單頁面應用時,會出現打包後的j ascript包非常大,影響頁面載入,我們可以利用路由的懶載入去優化這個問題,當我們用到某...

Ubuntu更改資料夾許可權及chmod詳細用法

ubuntu的許多操作是在終端中進行的,通過sudo命令管理的檔案是由root持有許可權的,一般使用者是無法改變的。在圖形介面上,我們可以通過屬性中的許可權選項夾進行操作。但是一旦檔案的屬性顯示當前使用者沒有讀寫權力時,無法在圖形介面上修改許可權。常用方法如下 sudo chmod 600 只有所有...