Security

    Android scoped storage and its security implications

    A 2026 view of Android scoped storage limiting an app to its app-specific directory, MediaStore media, and user-selected files, with all-files access restricted by Google Play

    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.

    DataWhere it goes
    Your app's private filesApp-specific external directory, no permission needed
    Shared media you create or readMediaStore interface
    Arbitrary files the user choosesStorage Access Framework picker, user-selected
    Broad access to all filesMANAGE_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.
    • #android
    • #scoped-storage
    • #external-storage
    • #manage-external-storage
    • #owasp-masvs
    • #app-security
    • #storage-access-framework

    Frequently asked questions

    What is Android scoped storage?
    It is Android's model for giving apps scoped rather than blanket access to external storage. Each app freely uses its own app-specific external directory, reaches shared media through the MediaStore, and accesses any other file only when the user explicitly selects it via the Storage Access Framework. Introduced in Android 10 and enforced from Android 11, it replaced the old broad read-and-write permission that let apps roam all of shared storage, including other apps' and the user's files.
    Why did Android introduce scoped storage?
    For privacy and security. 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 let a compromised or over-curious app reach data it had no need for. Scoped storage contains each app to its own data and what the user deliberately shares, limiting that exposure. The change improves user privacy and shrinks the attack surface of every app on the device.
    What are my storage options under scoped storage?
    Keep your app's private files in its app-specific external directory, which needs no storage permission; use the MediaStore for shared media like photos; and use the Storage Access Framework picker when the user must select a specific file or folder. Each path gives you the access you need without broad access to everything. Reserve the all-files permission for apps whose core function genuinely requires it, since it is restricted.
    Should I request MANAGE_EXTERNAL_STORAGE?
    Almost certainly not. MANAGE_EXTERNAL_STORAGE, all-files access, brings back broad access but is a high-risk permission that Google Play restricts to apps whose core function requires it, such as file managers and backup tools. Requesting it without that justification leads to rejection, and it widens your attack surface. If your app stores its own data and occasionally handles user-selected files, app-specific storage, MediaStore, and the Storage Access Framework cover you without it.
    Is app-specific storage encrypted?
    Not by default in a way that protects secrets, so scoped storage is about access scope, not encryption. App-specific storage is private to your app and not freely readable by others, but it is not a secure vault for secrets, which still belong in the Android Keystore-backed mechanisms. Use scoped storage to contain where files live, and a pre-submission scan such as PTKD.com to confirm you are not over-requesting storage access or storing sensitive data unsafely.

    Keep reading

    Scan your app in minutes

    Upload an APK, AAB, or IPA. PTKD returns an OWASP-aligned report with copy-paste fixes.

    Try PTKD free