注:<uses-permission>
によってリクエストしたパーミッションが、Google Play によるアプリのフィルタリングに影響を及ぼすことがあります。
たとえばハードウェア関連のパーミッション CAMERA
をリクエストする場合、Google Play 側でアプリには基盤となるハードウェア機能が必要だと判断し、そのような機能が備わっていない端末にはアプリを表示しないようにします。
フィルタリングをコントロールするには、Google Play に <uses-permission>
要素にある要件を認識してもらおうとせず、<uses-feature>
要素内でハードウェア機能を必ず明示的に宣言する必要があります。その後、<uses-feature>
の宣言に android:required="false"
属性を追加すると、特定の機能に対するフィルタリングを無効にできます。
ハードウェア機能を暗示するパーミッションのリストについては、<uses-feature>
要素のドキュメントをご覧ください。
- 構文:
<uses-permission android:name="string" android:maxSdkVersion="integer" />
- 含まれているファイル:
<manifest>
- 説明:
- アプリが正しく動作するためにユーザーが付与する必要があるシステム パーミッションを指定します。ユーザーがパーミッションを付与するのは、アプリのインストール時(Android 5.1 以前の端末の場合)、またはアプリの実行中(Android 6.0 以降の端末の場合)です。
パーミッションに関する詳細については、概要説明のページのパーミッションのセクションや、別ページのシステム パーミッションの API ガイドをご覧ください。ベース プラットフォームで定義されているパーミッションのリストは、
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 レベル 1
- 関連ドキュメント: