Before Marshmallow, permissions were handled at install-time and specified in the AndroidManifest.xml within the project. Full list of permissions can be found here . After Marshmallow, permissions must now be requested at runtime before being used. There are a number of libraries available to make runtime permissions easier. Dangerous Permissions First, we need to recognize the dangerous permissions that require us to request runtime permissions. This includes but is not limited to the following common permissions: Name Description Manifest.permission.READ_CALENDAR Read calendar events Manifest.permission.WRITE_CALENDAR Write calendar events Manifest.permission.CAMERA Access camera object Manifest.permission.READ_CONTACTS Read phone contacts Manifest.permission.WRITE_CONTACTS Write phone contacts Manifest.permission.ACCESS_FINE_LOCATION ...