<權限>

語法:
<permission android:description="string resource"
            android:icon="drawable resource"
            android:label="string resource"
            android:name="string"
            android:permissionGroup="string"
            android:protectionLevel=["normal" | "dangerous" |
                                     "signature" | ...] />
包含於:
<manifest>
說明:
宣告安全性權限,用於限制對此應用程式或其他應用程式特定元件或功能的存取權。如要進一步瞭解權限的運作方式,請參閱應用程式資訊清單總覽中的「權限」一節以及「安全性提示」。
屬性:
android:description
使用者可理解的權限說明,內容比標籤更長,也更為詳細。例如,在系統要求使用者將權限授予其他應用程式時,可能會顯示此屬性,用來說明權限。

此屬性已設為字串資源的參照。與 label 屬性不同,這不能是原始字串。

android:icon
對表示權限圖示的可繪製資源的參照。
android:label
使用者可理解的權限名稱。

為方便起見,您可以在開發應用程式時,直接將標籤設為原始字串。不過,當您準備發布應用程式時,請將標籤設為字串資源的參照,這樣才能像使用者介面中的其他字串一樣進行本地化。

android:name
用於在程式碼中 (例如 <uses-permission> 元素或應用程式元件的 permission 屬性中) 參照權限的名稱。

注意:系統不允許多個套件宣告名稱相同的權限,除非所有套件皆使用同一個憑證簽署。如果套件宣告了一項權限,系統將不允許使用者安裝具有相同權限名稱的其他套件,除非這些套件使用與第一個套件相同的憑證簽署。

因此,建議您使用反轉網域的命名方式,在權限前方加入應用程式套件名稱,後接 .permission.,然後是權限所代表功能的說明,以 SNAKE_CASE 的大寫格式撰寫。例如:com.example.myapp.permission.ENGAGE_HYPERSPACE

按照此建議方式命名可避免名稱衝突,且有助於清楚辨識自訂權限的擁有者和意圖。

android:permissionGroup
將這項權限指派給群組。這個屬性的值是群組名稱,使用此應用程式或其他應用程式中的 <permission-group> 元素宣告。如未設定此屬性,權限就不屬於任何群組。
android:protectionLevel

說明權限中隱含的潛在風險,並指出系統在判斷是否將權限授予提出要求的應用程式時,應遵循的程序。

每個防護等級都包含基本權限類型以及零個或多個標記。舉例來說,"dangerous" 防護等級不含任何旗標。反之,防護等級 "signature|privileged" 結合了 "signature" 基本權限類型與 "privileged" 旗標。

下表列出所有基本權限類型。如需旗標清單,請參閱 protectionLevel

意義
"normal" 預設值。風險較低的權限,允許要求權限的應用程式存取獨立的應用程式層級功能,對其他應用程式、系統或使用者造成的風險最低。系統會自動將這類權限授予在安裝期間要求權限的應用程式,無需取得使用者的明確核准。不過,使用者一律可在安裝前選擇是否查看這類權限。
"dangerous" 風險較高的權限,允許要求權限的應用程式存取使用者私人資料或控管裝置,可能對使用者造成負面影響。這類權限可能會導致潛在風險,因此系統不會自動將這類權限授予提出要求的應用程式。舉例來說,系統可能會向使用者顯示應用程式要求的任何危險權限,請使用者確認後再繼續進行;或採取其他方法避免使用者自動授予這類功能的存取權。
"signature" 只有在要求此權限的應用程式使用某項憑證簽署,而該憑證與宣告此權限的應用程式相同,系統才會授予權限。如果憑證相符,系統會自動授予權限,不會通知使用者或要求取得使用者的明確核准。
"knownSigner" 只有在要求權限的應用程式是以允許的憑證簽署時,系統才會授予的權限。如果列出要求者的憑證,系統會自動授予權限,不會通知使用者或徵得使用者的明確許可。
"signatureOrSystem"

"signature|privileged" 的舊同義詞,已於 API 級別 23 淘汰。

系統僅對符合下列條件的應用程式授予此權限:應用程式位於 Android 系統映像檔的專屬資料夾中,「或」要求此權限的應用程式使用某項憑證簽署,而該憑證與宣告此權限的應用程式相同。請避免使用這個選項,因為 "signature" 防護等級能夠滿足大部分需求,且不論應用程式安裝位置為何,此防護等級都可以正常運作。

"signatureOrSystem" 權限適用於以下特殊情況:多個供應商的應用程式建構於同一個系統映像檔中,且一同建構某些功能,因此需要明確共用這些功能。

導入版本:
API 級別 1
另請參閱:
<uses-permission>
<permission-tree>
<permission-group>