Runtime permissions
Dangerous permissions must be requested at runtime rather than granted at install.
What to doAdd requestPermissions calls, explain why, and handle denial.
Runtime permissions
Users were installing apps that demanded every permission at install time, and had no way to grant just one.
Install-time permissions were all-or-nothing, so a flashlight app that wanted contacts forced the user to accept or walk away.
Marshmallow introduced runtime permissions, Doze, App Standby and fingerprint authentication. The permission dialogue became a normal part of using an app.
The release that put the user in charge of permissions.
What changed underneath the APIs. These are the changes this site's architecture modules explain in depth.
The full archive has every recorded change with its migration advice.
Dangerous permissions must be requested at runtime rather than granted at install.
What to doAdd requestPermissions calls, explain why, and handle denial.
The Apache HTTP client is removed from the boot classpath.
What to doAdd the legacy library or migrate to HttpURLConnection or OkHttp.
Doze defers network, jobs and alarms when the device is idle.
What to doUse setExactAndAllowWhileIdle sparingly and avoid long-running background work.
SD cards can be adopted as internal storage.
What to doHandle volumes that may be adopted or portable.
New input and audio device support.
What to doCheck for feature availability before using them.
The system changes how text selection works.
What to doTest selection behaviour in custom views.
ACCESS_NOTIFICATION_POLICYnormalBIND_CARRIER_SERVICESsignature|privilegedBIND_CHOOSER_TARGET_SERVICEsignatureBIND_INCALL_SERVICEsignature|privilegedBIND_MIDI_DEVICE_SERVICEsignatureBIND_TELECOM_CONNECTION_SERVICEsignature|privilegedGET_ACCOUNTS_PRIVILEGEDsignature|privilegedPACKAGE_USAGE_STATSsignature|privileged|development|appop|retailDemoREQUEST_IGNORE_BATTERY_OPTIMIZATIONSnormalREQUEST_INSTALL_PACKAGESsignatureUSE_FINGERPRINTnormalThis release shipped on Linux kernel versions 3.18. Kernel versions vary by device.