Scoped storage with an opt-out
Apps targeting Android 10 can opt out with requestLegacyExternalStorage, but the default is scoped storage.
What to doMigrate to app-specific directories and MediaStore now; the opt-out disappears in Android 11.
System-wide dark theme
Android 10 introduced the modular update model that the platform had been building toward.
Even with Treble, many system components still shipped only inside the OS update.
Mainline made individual components updatable through Play as APEX and APK modules. Android 10 also added system-wide dark theme, full gesture navigation and scoped storage.
Parts of Android began updating without an OS update.
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.
Apps targeting Android 10 can opt out with requestLegacyExternalStorage, but the default is scoped storage.
What to doMigrate to app-specific directories and MediaStore now; the opt-out disappears in Android 11.
Apps cannot start activities from the background without an exemption.
What to doUse notifications with a full-screen intent or an exemption that fits the use case.
Apps cannot read IMEI and serial numbers without a privileged permission.
What to doUse resettable identifiers or an app-scoped ID.
The system can force dark mode, so apps should support a dark theme.
What to doAdd a dark theme and test with force-dark enabled.
Apps must handle gesture navigation insets rather than relying on a back button.
What to doUse WindowInsets and avoid conflicting edge gestures.
Even apps not targeting Android 10 are affected by some background launch restrictions.
What to doReview background launches and defer them until the user is in the app.
Devices use randomised MAC addresses for Wi-Fi scanning.
What to doDo not use MAC addresses as device identifiers.
Android 10 supports TLS 1.3 for connections.
What to doNo change needed unless you pin or fingerprint TLS versions.
ACCESS_BACKGROUND_LOCATIONdangerousACCESS_MEDIA_LOCATIONdangerousACTIVITY_RECOGNITIONdangerousBIND_CALL_REDIRECTION_SERVICEsignature|privilegedBIND_CARRIER_MESSAGING_CLIENT_SERVICEsignatureCALL_COMPANION_APPnormalREQUEST_PASSWORD_COMPLEXITYnormalSMS_FINANCIAL_TRANSACTIONSsignature|appopSTART_VIEW_PERMISSION_USAGEsignature|installerUSE_FULL_SCREEN_INTENTnormalThis release shipped on Linux kernel versions 4.9, 4.14. Kernel versions vary by device.