Runtime permissions
The number of different types of devices that your app will target depends on the feature requirements (which needs permissions) and the markets at which you are targeting (by explicitly selecting specific countries or by offering your app in specific languages).
If, for example, your app requires both a front and a back camera, you will be targeting a smaller number of devices, as would be the case if you just require a back camera.
Usually when installing an app, the user is asked to accept (or decline) all the required permissions, as it has been defined in the AndroidManifest
file of an app.
With the introduction of Android 6 (Marshmallow), the way a user is asked for particular permissions has changed. Only if a certain type of permission is required, the user will be prompted so that he can allow or deny that permission.
With that, there is an opportunity for the app to explain why this permission is needed. After this, the whole thing makes much more sense to the...