| page.title=<uses-permission> |
| parent.title=The AndroidManifest.xml File |
| parent.link=manifest-intro.html |
| @jd:body |
| |
| <dl class="xml"> |
| |
| <div class="sidebox-wrapper"> |
| <div class="sidebox"> |
| <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;"> |
| <p style="color:#669999;padding-top:1em;">Google Play Filtering</p> |
| |
| <p style="clear:left;">In some cases, the permissions that you request |
| through <code><uses-permission></code> can affect how |
| your application is filtered by Google Play.</p> |
| |
| <p>If you request a hardware-related permission — |
| <code>CAMERA</code>, for example — Google Play assumes that your |
| application requires the underlying hardware feature and filters the application |
| from devices that do not offer it.</p> |
| |
| <p>To control filtering, always explicitly declare |
| hardware features in <code><uses-feature></code> elements, rather than |
| relying on Google Play to "discover" the requirements in |
| <code><uses-permission></code> elements. Then, if you want to disable |
| filtering for a particular feature, you can add a |
| <code>android:required="false"</code> attribute to the |
| <code><uses-feature></code> declaration.</p> |
| |
| <p>For a list of permissions that imply |
| hardware features, see the documentation for the <a |
| href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions-features"> |
| <code><uses-feature></code></a> element.</p> |
| </div> |
| </div> |
| |
| <dt>syntax:</dt> |
| <dd><pre class="stx"><uses-permission android:<a href="#nm">name</a>="<i>string</i>" |
| android:<a href="#maxSdk">maxSdkVersion</a>="<i>integer</i>" /></pre></dd> |
| |
| <dt>contained in:</dt> |
| <dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code></dd> |
| |
| <dt>description:</dt> |
| <dd itemprop="description">Requests a permission that the application must be granted in |
| order for it to operate correctly. Permissions are granted by the user when the |
| application is installed (on devices running Android 5.1 and lower) or while the app is running (on devices running Android 6.0 and higher). |
| |
| <p> |
| For more information on permissions, see the |
| <a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a></code> |
| section in the introduction and the separate |
| <a href="{@docRoot}guide/topics/security/permissions.html">System |
| Permissions</a> API guide. |
| A list of permissions defined by the base platform can be found at |
| {@link android.Manifest.permission android.Manifest.permission}. |
| |
| <dt>attributes:</dt> |
| <dd><dl class="attr"> |
| <dt><a name="nm"></a>{@code android:name}</dt> |
| <dd>The name of the permission. It can be a permission defined by the |
| application with the <code><a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission></a></code> |
| element, a permission defined by another application, or one of the |
| standard system permissions (such as |
| {@link android.Manifest.permission#CAMERA "android.permission.CAMERA"} |
| or {@link android.Manifest.permission#READ_CONTACTS |
| "android.permission.READ_CONTACTS"}). As these examples show, |
| a permission name typically includes the package name as a prefix.</dd> |
| |
| <dt><a name="maxSdk"></a>{@code android:maxSdkVersion}</dt> |
| <dd>The highest API level at which this permission should be granted to your app. |
| Setting this attribute is useful if the permission your app requires is no longer needed beginning |
| at a certain API level. |
| <p>For example, beginning with Android 4.4 (API level 19), it's no longer necessary for your app |
| to request the {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission when your |
| app wants to write to its own application-specific directories on external storage (the directories |
| provided by {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}). However, |
| the permission <em>is required</em> for API level 18 and lower. So you can declare that this |
| permission is needed only up to API level 18 with a declaration such as this: |
| <pre> |
| <uses-permission |
| android:name="android.permission.WRITE_EXTERNAL_STORAGE" |
| android:maxSdkVersion="18" /> |
| </pre> |
| <p>This way, beginning with API level 19, the system will no longer grant your app the |
| {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission.</p> |
| <p>This attribute was added in API level 19.</p> |
| </dd> |
| |
| </dl></dd> |
| |
| <!-- ##api level indication## --> |
| <dt>introduced in:</dt> |
| <dd>API Level 1</dd> |
| |
| <dt>see also:</dt> |
| <dd> |
| <ul> |
| <li><code><a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission></a></code></li> |
| <li><a href="uses-permission-sdk-23-element.html" |
| ><code><uses-permission-sdk-23></code></a></li> |
| <li><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><uses-feature></a></code></li> |
| </ul> |
| </dd> |
| |
| </dl> |