構文:
<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

権限に含まれている可能性があるリスクと、権限をリクエスト元のアプリに付与するかどうかを決める際にシステムが従う必要がある手順を指定します。

各保護レベルは、基本権限タイプと 0 個以上のフラグで構成されます。たとえば、"dangerous" 保護レベルにはフラグがありません。一方、"signature|privileged" 保護レベルは "signature" 基本権限タイプと "privileged" フラグを組み合わせたものです。

次の表で、すべての基本権限タイプについて説明します。フラグの一覧については、protectionLevel をご覧ください。

説明
normal デフォルト値。分離されたアプリレベルの機能へのアクセスをリクエスト元のアプリに提供する低リスクの権限。他のアプリ、システム、ユーザーに対するリスクを最小限に抑えることができます。システムはリクエスト元のアプリに対し、このタイプの権限をインストール時に自動的に付与します。ユーザーによる明示的な承認を求めることはありません(ただし、ユーザーはインストール前にいつでもこれらの権限を確認できます)。
dangerous リクエスト元のアプリが個人データにアクセスしたり、ユーザーに悪影響を及ぼす可能性があるデバイスを管理したりできるようにする高リスクの権限。このタイプの権限は潜在的なリスクをもたらすため、システムがリクエスト元のアプリに自動的に権限を付与することはありません。たとえば、アプリからリクエストされた危険な権限がユーザーに表示され、先に進む前に確認が必要になることがあります。あるいは、このような機能をユーザーが自動的に使用できないようにするために、他のなんらかのアプローチがとられる場合もあります。
signature 権限を宣言したアプリと同じ証明書がリクエスト元のアプリの署名に使用されている場合にのみシステムから付与される権限。証明書が一致した場合、システムが自動的に権限を付与します。ユーザーに通知したり、ユーザーによる明示的な承認を求めたりすることはありません。
signatureOrSystem

"signature|privileged" の以前の同義語。API レベル 23 で非推奨になりました。

Android システム イメージの専用フォルダにインストールされているアプリ、または権限を宣言したアプリと同じ証明書を使用して署名されたアプリにのみシステムから付与される権限。signature 保護レベルはほとんどのニーズを満たし、アプリの正確なインストール場所を問わず機能するため、このオプションは使用しないでください。「signatureOrSystem」権限は、複数のベンダーがアプリをシステム イメージに組み込んでおり、特定の機能がまとめてビルドされているという理由でそれらを明示的に共有する必要がある特殊な状況で使用されます。

導入時の API レベル:
API レベル 1
関連項目:
<uses-permission>
<permission-tree>
<permission-group>