Scoped storage changed how Android apps see the file system, and it changed it for a security reason: an app should not be able to roam freely through all of shared storage and other apps' files. Since Android 10 and enforced from Android 11, apps get scoped access, their own private directory, media through a managed interface, and other files only with the user's explicit selection. The broad "read and write everything" permission is gone, and the all-files replacement is a high-risk permission Google Play tightly restricts. Here is what scoped storage is, the storage options it gives you, and the trap to avoid.
Short answer
Scoped storage limits an Android app's access to external storage so it can freely use only its own app-specific directory, access shared media through the MediaStore, and reach other files only when the user explicitly picks them through the Storage Access Framework. Per Android's storage documentation, introduced in Android 10 and enforced from Android 11, it removed broad read-and-write access to all of shared storage. The all-files replacement, the MANAGE_EXTERNAL_STORAGE permission, is high-risk and Google Play only allows it for apps like file managers that genuinely need it. So use app-specific storage and the managed interfaces, and do not request all-files access unless your app's core purpose requires it.
What you should know
- Scoped storage limits file access: no more roaming all of shared storage.
- App-specific storage is private: your own directory, no permission needed.
- Media goes through MediaStore: the managed interface for shared media.
- Other files need user selection: via the Storage Access Framework.
- All-files access is restricted: MANAGE_EXTERNAL_STORAGE is high-risk on Play.
What is scoped storage?
It is Android's model for giving apps scoped, rather than blanket, access to external storage. Before it, an app with the broad storage permission could read and write across shared external storage, including files created by other apps and the user, which was a privacy and security problem. Scoped storage, introduced in Android 10 and enforced from Android 11, replaced that with bounded access: each app freely uses its own app-specific external directory, reaches shared media through the MediaStore interface, and gets at any other file only when the user explicitly selects it through the Storage Access Framework picker. The broad read-and-write-everything permission no longer grants what it used to, and the temporary legacy opt-out that eased migration is not a long-term option. The effect is that an app sees its own data and what the user deliberately shares, not the whole file system.
What are the storage options under scoped storage?
A few clear paths depending on the data. The table lays them out.
| Data | Where it goes |
|---|---|
| Your app's private files | App-specific external directory, no permission needed |
| Shared media you create or read | MediaStore interface |
| Arbitrary files the user chooses | Storage Access Framework picker, user-selected |
| Broad access to all files | MANAGE_EXTERNAL_STORAGE, restricted by Google Play |
The pattern is to keep your app's own data in its app-specific directory, which is private to your app and needs no storage permission, use the MediaStore for shared media like photos, and use the Storage Access Framework when the user must pick a specific file or folder. Each path gives you what you need without broad access to everything, which is the whole point.
What about security and the all-files trap?
The security benefit is containment, and the trap is over-reaching for all-files access. Scoped storage improves privacy and security by stopping an app from accessing other apps' and the user's files indiscriminately, which limits what a compromised or over-curious app can reach. The all-files permission, MANAGE_EXTERNAL_STORAGE, brings back broad access, but it is a high-risk permission that Google Play restricts to apps whose core function genuinely requires it, such as file managers and backup tools, and requesting it without that justification leads to rejection. So treat all-files access as something you almost certainly do not need: if your app just stores its own data and occasionally handles user-selected files, the app-specific directory, MediaStore, and the Storage Access Framework cover you, and reaching for all-files access is both a Play policy problem and a larger attack surface.
What to watch out for
The first trap is requesting MANAGE_EXTERNAL_STORAGE, all-files access, when your app does not need it, which both fails Google Play's restriction and widens your exposure. The second is relying on the legacy storage opt-out, which is not a long-term solution. The third is storing sensitive data in shared storage where other apps could reach it, rather than your app-specific directory, and remember even app-specific storage is not encrypted by default, so secrets still belong in the Keystore. A pre-submission scan such as PTKD.com (https://ptkd.com) reads the compiled APK or AAB against OWASP MASVS and surfaces your storage permissions and how the app stores data, so you can confirm you are not over-requesting access or storing sensitive data unsafely. The storage choices you make in the app.
What to take away
- Scoped storage limits an app to its own app-specific directory, shared media via the MediaStore, and other files only when the user selects them through the Storage Access Framework.
- Introduced in Android 10 and enforced from Android 11, it removed broad read-and-write access to all of shared storage.
- The all-files permission, MANAGE_EXTERNAL_STORAGE, is high-risk and Google Play restricts it to apps that genuinely need it, like file managers.
- Use app-specific storage and the managed interfaces, keep secrets in the Keystore, and use a pre-submission scan such as PTKD.com to confirm you are not over-requesting storage access.


