Describes how to declare that your app needs system permissions; also describes how (on M and later) to request those permissions at runtime. There's a companion CL which updates various existing API docs for the new M permissions model (http://ag/762405 ). See first comment for doc stage location. bug: 23725768 Change-Id: I7c3babdb9348969d1b0b019e7e9ef7116b04c658
116 lines
4.4 KiB
Plaintext
116 lines
4.4 KiB
Plaintext
page.title=Declaring Permissions
|
|
helpoutsWidget=true
|
|
|
|
@jd:body
|
|
|
|
<div id="tb-wrapper">
|
|
<div id="tb">
|
|
<h2>This lesson teaches you to</h2>
|
|
<ul>
|
|
<li>
|
|
<a href="#perm-needed">Determine What Permissions Your App Needs</a>
|
|
</li>
|
|
<li>
|
|
<a href="#perm-add">Add Permissions to the Manifest</a>
|
|
</li>
|
|
</ul>
|
|
|
|
<!--
|
|
<h2>Dependencies and Prerequisites</h2>
|
|
<ul>
|
|
<li></li>
|
|
</ul>
|
|
-->
|
|
|
|
<h2>You should also read</h2>
|
|
<ul>
|
|
<li><a href="{@docRoot}guide/topics/security/permissions.html#permissions">
|
|
Using Permissions</a></li> <ul>
|
|
<li><a href="{@docRoot}guide/topics/security/permissions.html#normal-dangerous">
|
|
Normal and Dangerous Permissions</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<p>
|
|
Every Android app runs in a limited-access sandbox. If an app needs to use
|
|
resources or information outside of its own sandbox, the app has to request
|
|
the appropriate <i>permission.</i> You declare that your app needs a
|
|
permission by listing the permission in the <a href=
|
|
"{@docRoot}guide/topics/manifest/manifest-intro.html">App Manifest</a>.
|
|
</p>
|
|
|
|
<p>
|
|
Depending on how sensitive the permission is, the system might grant the
|
|
permission automatically, or the device user might have to grant
|
|
the request. For example, if your app requests permission to turn on the
|
|
device's flashlight, the system grants that permission automatically. But
|
|
if your app needs to read the user's contacts, the system asks the user
|
|
to approve that permission. Depending on the platform version, the user
|
|
grants the permission either when they install the app (on Android 5.1 and
|
|
lower) or while running the app (on Android 6.0 and higher).
|
|
</p>
|
|
|
|
<h2 id="perm-needed">Determine What Permissions Your App Needs</h2>
|
|
|
|
<p>
|
|
As you develop your app, you should note when your app is using capabilities
|
|
that require a permission. Typically, an app is going to need permissions
|
|
whenever it uses information or resources that the app doesn't create, or
|
|
performs actions that affect the behavior of the device or other apps. For
|
|
example, if an app needs to access the internet, use the device camera, or
|
|
turn Wi-Fi on or off, the app needs the appropriate permission. For a list of
|
|
system permissions, see <a href=
|
|
"{@docRoot}guide/topics/security/permissions.html#normal-dangerous">Normal
|
|
and Dangerous Permissions</a>.
|
|
</p>
|
|
|
|
<p>
|
|
Your app only needs permissions for actions that it performs directly. Your
|
|
app does not need permission if it is requesting that another app perform the
|
|
task or provide the information. For example, if your app needs to read the
|
|
user's address book, the app needs the {@link
|
|
android.Manifest.permission#READ_CONTACTS READ_CONTACTS} permission. But if
|
|
your app uses an <em>intent</em> to request information from the user's
|
|
Contacts app, your app does not need any permissions, but the
|
|
Contacts app <em>does</em> need to have that permission. For more
|
|
information, see <a href="best-practices.html#perms-vs-intents">Consider
|
|
Using an Intent</a>.
|
|
</p>
|
|
|
|
<h2 id="perm-add">Add Permissions to the Manifest</h2>
|
|
|
|
<p>
|
|
To declare that your app needs a permission, put a <a href=
|
|
"{@docRoot}guide/topics/manifest/uses-permission-element.html"
|
|
><code><uses-permission></code></a>
|
|
element in your <a href=
|
|
"{@docRoot}guide/topics/manifest/manifest-intro.html">app manifest</a>, as a
|
|
child of the top-level <a href=
|
|
"{@docRoot}guide/topics/manifest/manifest-element.html"><code><manifest></code></a>
|
|
element. For example, an app that needs to send SMS messages would have this
|
|
line in the manifest:
|
|
</p>
|
|
|
|
<pre><manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
package="com.example.snazzyapp">
|
|
|
|
<strong><uses-permission android:name="android.permission.SEND_SMS"/></strong>
|
|
<!-- other permissions go here -->
|
|
|
|
<application ...>
|
|
...
|
|
</application>
|
|
|
|
</manifest></pre>
|
|
|
|
<p>
|
|
The system's behavior after you declare a permission depends on how sensitive
|
|
the permission is. If the permission does not affect user privacy, the system
|
|
grants the permission automatically. If the permission might grant access to
|
|
sensitive user information, the system asks the user to approve the request.
|
|
For more information about the different kinds of permissions, see
|
|
<a href="{@docRoot}guide/topics/security/permissions.html#normal-dangerous">Normal
|
|
and Dangerous Permissions</a>.
|
|
</p>
|