| 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> |