- 語法:
<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"
只有在要求此權限的應用程式使用某項憑證簽署,而該憑證與宣告此權限的應用程式相同,系統才會授予權限。如果憑證相符,系統會自動授予權限,不會通知使用者或要求取得使用者的明確核准。 "signatureOrSystem"
"signature|privileged"
的舊同義詞,已於 API 級別 23 淘汰。系統僅對符合下列條件的應用程式授予此權限:應用程式位於 Android 系統映像檔的專屬資料夾中,「或」要求此權限的應用程式使用某項憑證簽署,而該憑證與宣告此權限的應用程式相同。請避免使用這個選項,因為
"signature"
防護等級能夠滿足大部分需求,且不論應用程式安裝位置為何,此防護等級都可以正常運作。"signatureOrSystem"
權限適用於以下特殊情況:多個供應商的應用程式建構於同一個系統映像檔中,且一同建構某些功能,因此需要明確共用這些功能。
- 導入版本:
- API 級別 1
- 另請參閱:
<uses-permission>
<permission-tree>
<permission-group>
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2023-07-04 (世界標準時間)。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"缺少我需要的資訊"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"過於複雜/步驟過多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"過時"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻譯問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/程式碼問題"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"容易理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"確實解決了我的問題"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]