<permission>

構文:
<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 属性など)で使用される名前です。

注: すべてのパッケージが同じ証明書を使用して署名されている場合を除き、複数のパッケージで同じ名前の権限を宣言することはできません。パッケージで権限を宣言すると、ユーザーは同じ権限名の他のパッケージをインストールできなくなります(他のパッケージが最初のパッケージと同じ証明書を使用して署名されている場合を除く)。名前の競合を回避するために、カスタムの権限には逆ドメイン形式の名前(例: com.example.myapp.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>