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