Android 6 Marshmallow users have a big decision to make before they install an app from the Google Play Store. Will they accept the full list of permissions and have faith that it will not overstep its boundaries, or refuse to install it at all?
What a limited access sandbox means for you
To protect the system’s integrity and user’s privacy, Android runs each app in a limited-access sandbox. If the app wants to use resources or information outside of its sandbox, it has to explicitly request permissions that the user has to grant. These encompass everything from obtaining the user’s GPS location to accessing the phone’s call status and contacts list.
The new Android 6 permissions model
Users who have devices with Android 6 and up will experience a new way of interacting with permissions. The new permissions paradigm in Android 6 actually resembles the one currently employed by iOS. It puts more power in the hands of users, by presenting them the choice to grant permissions while the app is running. This streamlines the app installation and update process, as users do not have to scroll through a lengthy list of permissions beforehand.
These benefits, however, do come with a price.
Developers now have to manually issue permission requests from inside the app, usually before a component that requires them is started. This leads to a unique set of development and user experience challenges.
Requesting permissions in the new Android 6 permissions model — use cases and challenges
Users cannot manage individual permissions, instead permissions are grouped in categories defined by their functionality, for example, managing reading/writing to the phone’s external storage.
Granting a permission from a given category grants permission to all members in that category.
For example, when permission to write to the phone’s external storage is granted, permission to read from that storage will also be automatically granted, as they are part of the same Storage category. Further information on the different permission categories can be found here.
In order not to bog down user experience with too many permission requests, a Normal permissions category is present. It encompasses all permissions that do not pose a security or privacy threat to the user. Such permissions are given automatically without any user interaction. An example of one such widely used permission is allowing the app access to the internet.
At first glance this might be a cause for concern as it could lead to, for example, a flashlight app being able to connect to the internet, without the user’s knowledge. On the other hand, however, without having the permission to read/write information to the device’s storage, which has to be manually granted, such an app will not be able to cause harm to users.
Transitioning to the new permissions model in Android 6 can be facilitated by following some simple best practices. At their core, these revolve around the ability to clearly communicate to users why a certain permission is required before it is requested.
In some cases when permission is apparently integral for the app to function, no explanation is required, and it could be requested as soon as the app launches. If you have a navigation app, for example, there is probably no need to tell the user why the Location permission is needed.
On the other hand, users may be confused as to why Location is required in a photo application, for instance. A good idea will might be, for example, to prompt them when they try to attach their location to an image.
“Never Ask Again”
Giving users context as to why a specific permission is requested is the key for them accepting it. This is doubly as important, as if a user has declined a permission once, the next time he is asked, a new option – “Never Ask Again” will be present in the dialog.
If the user selects this option, a prompt for this permission will never again appear in the app and developers have no way to prevent this! This scenario should be avoided at all costs, as the only way to activate this permission after that, is if the user manually enables it from the Permissions section in the system’s App Info screen, which is not trivial to find, especially for non-tech savvy users.
Luckily, Google has provided a way for the app to know when a specific permission request was previously denied by the user. This is the perfect time to educate the users and tell them exactly why the permission is needed before requesting it again.
Legacy apps: Is yours ready?
Perhaps one of the biggest questions concerning your business is how will Android 6 be affecting your existing apps. Older apps that are not configured to use the latest Android 6 development tools (version 23) have no way to recognize the new permission model. There is no need to worry, however, as Google has stated that these apps will still use the old model and request all their required permissions on install. If your app takes advantage of the new tools version or higher, however, you have to be prepared to handle the new permissions model.
As stated above in Android 6 tech savvy users can grant or revoke a selected permission group at any time through the new Permissions section of the App Info screen.
Take note that this is possible not only for updated apps, but for legacy apps installed with the old permissions model as well. A lengthy warning message will be shown if the user attempts this, but it will not stop them from disabling a permission if they are set on doing so.
Worst Case Scenario
What can happen in the worst case scenario: when an app tries to access functionality that it was not granted permission to? Google has ensured that when a component fails in this manner, it will return appropriate empty data, instead of outright crashing the app. This can be a small comfort, however, as app functionality can still be affected. Developers should be mindful of these cases and make sure that their app handles them gracefully.
The new permissions model in Android 6 presents new challenges to developers, user experience designers and not in the last place, to the users themselves. With great power comes great responsibility and with users having even bigger control over their apps, it is now more important than ever for developers to engage and clearly communicate the value their product provides.