<uses-permission>

注: 場合によっては、<uses-permission> を通じてリクエストした権限が、Google Play でのアプリのフィルタリングに影響を与えることがあります。ハードウェア関連の権限(CAMERA など)をリクエストした場合、Google Play は、基となるハードウェア機能がアプリに必要であると見なし、その機能を持たないデバイスからアプリを除外します。

フィルタリングを制御するには、Google Play に頼って <uses-permission> 要素の要件を「検出」するのではなく、必ず <uses-feature> 要素でハードウェア機能を明示的に宣言します。特定の機能のフィルタリングを無効にする場合は、android:required="false" 属性を <uses-feature> 宣言に追加します。

ハードウェア機能を暗示する権限のリストについては、<uses-feature> 要素のドキュメントをご覧ください。

構文:
<uses-permission android:name="string"
        android:maxSdkVersion="integer" />
上位の要素:
<manifest>
説明:
アプリが正常に動作するためにユーザーが付与する必要があるシステム権限を指定します。ユーザーは、Android 5.1 以前を搭載したデバイスではアプリのインストール時に、または Android 6.0 以降を搭載したデバイスではアプリの実行中に、権限を付与します。

権限について詳しくは、アプリ マニフェストの概要の権限のセクションと、Android での権限に関するガイドをご覧ください。ベース プラットフォームで定義されている権限のリストは、android.Manifest.permission で確認できます。

属性:
android:name
権限の名前。<permission> 要素を使用してアプリで定義した権限、別のアプリで定義した権限、または、いずれかの標準的なシステム権限("android.permission.CAMERA""android.permission.READ_CONTACTS" など)です。このように、権限の名前には通常、プレフィックスとしてパッケージ名が含まれます。
android:maxSdkVersion
アプリにこの権限を付与する最大の API レベル。この属性を設定すると、アプリが必要とする権限が特定の API レベルで不要になった場合に便利です。

たとえば、Android 4.4(API レベル 19)以降では、アプリが外部ストレージ上のアプリ固有のディレクトリ(getExternalFilesDir() によって提供されるディレクトリ)に書き込むために、WRITE_EXTERNAL_STORAGE 権限をリクエストする必要がなくなりました。

しかし、この権限は API レベル 18 以前では必須です。次のように宣言することで、この権限は API レベル 18 以前でのみ必要であるということを宣言できます。

<uses-permission
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"
     android:maxSdkVersion="18" />

これで API レベル 19 以降では、システムがアプリに WRITE_EXTERNAL_STORAGE 権限を付与しなくなります。

API レベル 19 で追加されました。

導入時の API レベル:
API レベル 1
関連項目: