MANAGE_EXTERNAL_STORAGE (All files access) on Google Play
Checked against Google's policy pages on .
- android.permission.MANAGE_EXTERNAL_STORAGE
What does it allow?
MANAGE_EXTERNAL_STORAGE, shown to users as All files access, gives an app read and write access to all files in shared storage. The user grants it on a special settings screen, not in a normal permission prompt.
Which apps does Google Play allow to use it?
Google Play limits it to apps whose core purpose needs broad file access. Its list: file managers, backup and restore apps, antivirus apps, document management apps, on-device file search, file encryption, and device-to-device migration apps.
Google names two uses that do not qualify: accessing media files (use MediaStore) and any flow where the user picks individual files (use the Storage Access Framework).
Why is it in my app?
File-handling and download libraries sometimes declare it. If your app never browses the file system, check the merged manifest for where it came from.
To see every permission in your build and which ones may need a declaration, paste your merged manifest into the Play Console permission declaration checker.
What can I use instead?
To let the user open or save a document, use the Storage Access Framework (ACTION_OPEN_DOCUMENT, ACTION_CREATE_DOCUMENT): the user picks the file and your app gets access to that file only.
For photos, videos and audio, use MediaStore, or the photo picker for images and video. Files your app creates in its own app-specific directories need no permission at all.
How do I remove it?
Add it to your own manifest with tools:node="remove". The manifest merge then leaves it out, whichever library declared it. In Flutter and React Native the file is android/app/src/main/AndroidManifest.xml.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:node="remove" />
</manifest>In Expo, block it in your app config instead:
{
"expo": {
"android": {
"blockedPermissions": [
"android.permission.MANAGE_EXTERNAL_STORAGE"
]
}
}
}Then test the feature the library provides: if it needed the permission, that feature may stop working.
How do I declare it if I keep it?
If your app is one of the kinds Google lists, complete the Permissions Declaration Form in Play Console. Google says the app must receive approval before using it, and apps that do not meet the policy may be removed.
Common questions
- My app exports a PDF. Do I need All files access?
- No. Let the user choose where to save it with the Storage Access Framework, or write it to your app's own directory, neither of which needs the permission.
- Is WRITE_EXTERNAL_STORAGE the same thing?
- No. WRITE_EXTERNAL_STORAGE has no effect for apps targeting Android 11 or higher on those devices, and needs no declaration. Cap it with android:maxSdkVersion="28" if only old devices need it.
Read next
REQUEST_INSTALL_PACKAGES on Google Play
Ask to install other APKs. Never for self-updates; only when installing is a core feature.
USE_FULL_SCREEN_INTENT on Android 14 and Google Play
Notifications that take over the screen. Granted by default only to calling and alarm apps.
Foreground service types and the Play Console declaration
FOREGROUND_SERVICE_* types. Each needs a Play Console description and video on Android 14+.