注: 場合によっては、<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
- 関連項目: