Most apps require that users grant them certain
[app permissions](https://developer.android.com/guide/topics/permissions/overview) in order to function
properly. However, in some cases, users might not grant the permissions

- They think the permission isn't needed for the app's core functionality.
- They don't use the functionality associated with the permission.
- They are concerned about the permission's impacting device performance.
- They're simply uncomfortable, for example due to sensitivities regarding privacy.

## Use Android vitals to gauge user perceptions {#:android-vitals}

Android vitals can help you gauge your users' privacy preferences and engagement
by informing you about the percentage of permission denials your app
is receiving. Via the Play console, Android vitals shows the percentage
of daily permission sessions during which users denied permissions for your app.

A *daily permission session* refers to a day during which your app requested
at least one permission from a user. When a given user has to make multiple
decisions for the same permission, only the final decision at the end of a
session is recorded.

Android vitals shows you users' decisions at the permission-group
level. Android vitals also provides benchmarks to help compare where your app
stands with respect to other top apps in the same Play store category.
For information on how Google Play collects Android vitals data, see the
[Play Console documentation](https://support.google.com/googleplay/android-developer/answer/7385505).

## Best practices

Unusually high denial rates suggest that users don't think the additional
exposure of their information is worth the benefits offered in return.
There are a number of ways to make users feel more comfortable using your app.
You might be able to reduce the denial rate if you take
steps such as those outlined in this section. However, you shouldn't
expect to drive denial rates to zero, because users
have diverse personal preferences and some simply don't wish to grant
permissions under any circumstances.

### Avoid requesting unnecessary permissions

Research shows that users prefer apps that request fewer permissions.
Keeping permission requests to the minimum set necessary can help improve user
trust in an app, and drive more installs. Conversely, adding unnecessary
permission requests might negatively impact your app's visibility on the Play
Store. If
specific permissions aren't necessary, you might be able to reduce your app's
number of permission requests through alternative methods. Some common
approaches are outlined in
[App Permissions Best Practices](https://developer.android.com/training/permissions/usage-notes).

### Surface the permission request in context

Non-critical permissions that are less intuitive might benefit from being
explained in context. Doing so improves users' comprehension of the value
derived from the permission. Figure 1 shows an example of educating a user
in context.

![](https://developer.android.com/static/topic/performance/vitals/images/educate-in-context.png)


**Figure 1.**
Explaining a permission request in context

<br />

Users understand the value proposition better when the app requests the
permission in the context of the related functionality.
This improved understanding might convince more users to grant permission
requests.

For more information about good guidelines about how to educate users and
request permissions, see the
[material design pattern for permissions](https://material.io/guidelines/patterns/permissions.html#permissions-denied-permissions).

### Explain why your app needs the permission

Consider starting by requesting your permission in-context: Providing an
explanation for less intuitive permissions helps to improve user comprehension
of the permission. The
[`shouldShowRequestPermissionRationale()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#shouldShowRequestPermissionRationale(android.app.Activity,%20java.lang.String))
utility method returns true
if the user has previously denied the request. Your app can use this method to
determine when to show the explanation.

You can find more details about how to surface explanation strings in
[Request App Permissions](https://developer.android.com/training/permissions/requesting).