Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
FREEDOM251

Freedom251 › Blog › Android

Android storage: Which API fits each type of file?

By Freedom251 Team · · 9 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use the storage API that matches who owns the data. Keep private app state in internal or app-specific storage, publish shareable photos and other media through MediaStore, and let users choose documents or folders with the Storage Access Framework (SAF). Scoped storage is the default for apps targeting Android 10 (API 29) and newer, so an unrestricted view of shared storage is no longer the normal contract. Direct filesystem paths still have a role for interoperability, but a path is no longer a reliable identity for every file an Android app can use.

The Android storage model in 2026

Android storage is a purpose-based access model layered over several providers. An app normally gets access to its own private area, selected shared media, or documents and directories that the user explicitly grants. The operating system can therefore enforce isolation without preventing people from sharing photos, opening a PDF from a cloud service, or copying files from removable storage.

As an Amazon Associate I earn from qualifying purchases.

Scoped storage applies by default when an app targets Android 10 (API level 29) or higher. Instead of treating the shared /sdcard namespace as an unrestricted drive, the app works with its app-specific directories and the media or documents allowed by the relevant API. Android recommends staying within scoped storage unless a required file is outside an app-specific directory and outside the collections that MediaStore can handle.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The target SDK matters. On Android 11 (API level 30) and later, once an app targets API 30, the system ignores requestLegacyExternalStorage. A legacy path-based design must be migrated rather than kept alive with that flag.

#1 Best Overall
Yojaro 4Pack Silicone Suction Phone Case Mount, Silicon Adhesive Smartphones Stand Sticky, Hands-Free Phone Accessories Holder for Selfies and Videos (Black & White & Translucent & Light Pink)
  • 【Strong Adsorption】The inspiration of the silicone phone suction case comes from the adhesive force of the octopus. Each suction cup phone mount is 3.15 inches long and 2.17 inches wide, with 24 independent suction cups providing a stronger and more stable suction force, so you don't have to worry about your phone falling during use.
  • 【Back of Phone Suction Grip】Remove the adhesive film on the phone suction cup and stick it on the phone case. You can then fix the phone on any smooth surface, which is very convenient. (The phone suction cup cannot be removed and reused after being attached to the phone case. It is recommended to attach it to a regular phone case, not a valuable one.)
  • 【Widely Used】Our non-slip silicone phone sticky grip mount attaches to almost any flat phone case and make it compatible with common mobile phones such as iPhone and Android.You can shoot, watch videos or video calls in the kitchen, gym, dance studio, bathroom and other places.
  • 【Capture the Wonderful Picture】Whether you are a TikTok creator or just like to share videos and photos, this phone suction cup can help you hands-free capture wonderful videos and photos for sharing with friends.
  • 【Note】You can fix the phone suction cup on a smooth surface such as a mirror or glass. If necessary, wipe the suction cup with a damp cloth to obtain stronger suction. Before releasing your hand, make sure the phone is firmly fixed. (Not applicable to rough walls, wooden surfaces, and other uneven surfaces)

Choose an API by data ownership

What the data is Preferred API Reason
Private configuration, credentials, or database records Internal files, preferences, or Room Other apps are blocked from the app’s internal storage.
Private large files used only by your app App-specific internal or external directory Modern Android does not require broad storage permission for these locations, and uninstall cleanup is explicit.
User photos, videos, audio, or downloads that should remain after uninstall MediaStore collections Shared, indexed media survives removal of the creating app.
A user-selected PDF, EPUB, archive, or other document SAF with ACTION_OPEN_DOCUMENT or ACTION_CREATE_DOCUMENT The system picker works across local, removable, and cloud-backed document providers.
A user-selected folder SAF with ACTION_OPEN_DOCUMENT_TREE The user grants access to the chosen directory subtree.
Device-wide file management, backup, migration, search, or security MANAGE_EXTERNAL_STORAGE only when core functionality requires it It is a narrow, policy-sensitive exception, not a general replacement for SAF or MediaStore.

Private app data: internal and app-specific storage

Use internal storage for secrets and configuration

Internal files, preferences, and a Room database are appropriate for settings, credentials, indexes, and other data that has meaning only to your app. Other apps are blocked from this area, so it is a better default for sensitive information than a shared directory. The same principle applies to caches, although caches should always be treated as disposable.

Use an app-specific directory for large private files

Large downloads, rendered assets, offline maps, and other private payloads can live in the app-specific internal or external directory. On current Android releases, these locations do not require a broad shared-storage permission. The trade-off is lifecycle: app-specific files are removed when the app is uninstalled. If a user expects a file to remain available to other apps or after uninstall, it is not app-private data and should be published through a shared API instead.

MediaStore for shared media and downloads

MediaStore is Android’s indexed abstraction for shared media collections. Use the appropriate collection through ContentResolver: MediaStore.Images for photos, MediaStore.Video for videos, MediaStore.Audio for audio, and MediaStore.Downloads for downloads. Media inserted into these collections remains on the device after the creating app is uninstalled.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Write with collection metadata

When creating or updating an item, provide metadata such as DISPLAY_NAME and RELATIVE_PATH. Those fields let Android place the item in the correct shared collection without forcing your code to manufacture an absolute path. Keep the URI returned by the insert operation as the item’s identity.

Rank #2
Apple EarPods Headphones with USB-C Plug, Wired Ear Buds with Built-in Remote to Control Music, Phone Calls, and Volume
  • SUPERIOR COMFORT — Unlike traditional circular ear buds, the design of EarPods is defined by the geometry of the ear. Which makes them more comfortable for more people than any other ear bud–style headphones.
  • HIGH-QUALITY AUDIO — The speakers inside EarPods have been engineered to maximize sound output and minimize sound loss, which means you get high-quality audio.
  • BUILT-IN REMOTE — EarPods with USB-C plug also include a built-in remote that lets you adjust the volume, control the playback of music and video, and answer or end calls with a pinch of the cord.
  • COMPATIBILITY — Works with all devices that have a USB-C port.
  • INTEGRATED MICROPHONE — A built-in microphone precisely captures your voice while you’re on the phone, taking a FaceTime call, or summoning Siri — so you’re always heard loud and clear.

Understand MediaStore.Files limits

With scoped storage enabled, MediaStore.Files is primarily useful for media your app created. Access to media created by other apps requires the relevant media permissions and a policy-compliant use case. Do not design new code around the legacy DATA column or assume that every MediaStore row maps to a stable path.

Use the photo picker for user-owned media

If the task is simply to let a user choose photos or videos, the system photo picker provides a built-in selection flow without granting the app access to the entire media library. This is a narrower permission boundary than asking for broad media visibility and is usually the right choice for an import or attachment feature.

SAF: the right abstraction for documents and folders

The Storage Access Framework, introduced in Android 4.4 (API 19), puts a system-controlled picker in front of document providers. A provider may represent internal flash storage, a removable card, a USB volume, or a cloud service. Its physical implementation is intentionally hidden behind a provider contract, so a URI can identify content even when no local absolute path exists.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Pick a document for one-time import

ACTION_GET_CONTENT asks the user to choose content for your app to import, usually as a copy. Read the returned URI with ContentResolver streams and copy the bytes into your own app-specific location if the app needs an independent working copy.

Rank #3
PopSockets Adhesive Phone Grip, Holder- Black | Anti-Drop, Kickstand, Secure Comfortable Hold, Black, Create a Mobile Phone Outfit
  • Secure Hold: Our PopSockets adhesive phone grip gives your cell phone a secure, comfortable hold in hand to help prevent drops while texting, taking photos, or scrolling on the go. Designed to stick firmly to most phone cases and devices.
  • Hands-Free Made Easy: Easily turn your PopSocket into a phone stand to prop up your phone anywhere, perfect for watching videos, video calls, or following recipes. A must-have phone holder that keeps your device secure and ready for anything.
  • Compatibility: Works with all phones, tablets, and Kindles. Sticks best to smooth, hard plastic cases and may not adhere to silicone or textured cases. Easily swap your PopTop to change up your style.
  • Black PopSockets: Simple, refined, and endlessly versatile. A timeless essential for any phone.
  • Travel Must-Have for People On the Go: A must-have travel accessory for flights, flying, airports, air travel, airplanes, planes, international trips, cruises, and long travel days. Key gadget for your airport haul, travel accessories and must-haves.

Keep access to a provider-owned document

ACTION_OPEN_DOCUMENT is for opening a document whose authoritative copy remains with the provider. Request the persistable read or write flag, then call takePersistableUriPermission for the returned URI when the app must edit or reopen it after the current activity ends. Store the URI and provider metadata, not a guessed filesystem path.

Let the user grant a folder

ACTION_OPEN_DOCUMENT_TREE lets the user select a directory and grants access to that subtree. It is the best fit for a folder-based workflow such as choosing an export destination or a project directory. The grant is still bounded by protected-location rules and by the permissions the provider exposes.

Why paths fail for SAF content

A document URI may point to remote bytes, a virtual document, a removable volume that is not mounted later, or a provider that manages its own naming and permissions. Code that requires java.io.File or a native path cannot represent all of those cases. Use ContentResolver.openInputStream(), openOutputStream(), or a provider-specific file descriptor where available. Treat a path as an optimization for a library that demands one, not as the canonical identity.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Scoped-storage boundaries you must test

Other apps’ app-specific directories are off-limits

Scoped storage blocks an app from browsing another app’s external app-specific directory. This remains true even when the other directory is physically visible under shared storage. A file manager-like screen cannot infer that a visible directory is readable merely because it has a familiar name.

Rank #4
Sale
360° Rotating Stainless Steel Phone Tether Tab (Silvery 3-Pack) - Universal for iPhone & Other Phones (Fits Wristbands/Necklaces/Crossbody Straps)
  • [360 ° Flexible Rotation Design] Comes with a rotatable lanyard ring that supports 360 ° free rotation, effectively solving the problem of twisted and tangled lanyards
  • [Wide compatibility] The ultra-thin 0.02-inch design does not block the charging port at all, and both wired and wireless charging can be used directly without removing the pad. Compatible with most smartphones such as iPhone, compatible with various wristbands, lanyards, crossbody straps, and keychains
  • [Durable and Portable Material] Premium rust-resistant stainless steel material with good flexibility, which not only avoids scratching the phone case, but also has excellent anti rust and anti fading performance
  • [Multi scenario Practical] Paired with a lanyard or wristband, hands-free use can be achieved. The phone is within reach and not easily dropped, ideal for daily commuting and outdoor activities. Suitable for full coverage phone cases, does not support half coverage phone cases
  • [Quality Service] If you find any damage or other issues with the product upon receipt, please contact us immediately. We will handle it quickly

Android 11 restrictions on SAF navigation

On Android 11 and newer, SAF tree selection cannot target the internal-storage root, reliable SD-card roots, or the Download directory as a tree. File selection also cannot target Android/data or Android/obb. These restrictions are enforced by the system picker; changing labels in your app does not bypass them.

Plan migration before raising the target SDK

Apps moving to API 30 or later should inventory every stored path before release. A path that worked under a legacy target can become unreadable, and requestLegacyExternalStorage will not restore it once the app targets Android 11. Migrate files into app-specific storage, MediaStore, or a user-granted SAF location while the old version can still read them.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

When direct filesystem paths still make sense

Android 11 permits direct file paths and native APIs such as File and fopen() for shared-media interoperability. This is useful when a third-party codec, image library, or native component accepts only a path. The permission boundary does not disappear: the path must still refer to data your app is allowed to access under scoped storage.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a two-layer design when a library needs a path. Keep the MediaStore or SAF URI as the authoritative identity and permission record, resolve or materialize a temporary path only for the operation, and update the URI-backed item rather than treating the temporary path as permanent. Removable volumes can change, providers can own the bytes elsewhere, and users can move or delete content, so a cached absolute path can become stale.

Best Value
Anteel 2 Pack Silicone Suction Cup Phone Case Mount Double Sided, Hands-Free Silicon Phone Grip with Higher Suction Power for Selfies and Videos, Non Slip Phone Accessories (LightPink&White)
  • 【PKYAA Double Sided Silicone Suction Phone Case Mount】PKYAA With Double Sided 40 Strong and Reliable individual suction cups, PKYAA provides a thicken and upgraded universal silicon suction mount for your phone.
  • 【Friendly to Content Creators】If you are a content creator or an online influencer, you can create videos anywhere with this suction mount completely hands free with this silicone cell phone mount for cases.
  • 【HANDS-FREE & Adhere to Mirrors】This Double Sided silicone suction phone case mount allows you to stick your phone to the mirror easily. No longer holding your phone in one hand to watch video tutorials while making up.
  • 【Strong Grip on the Smooth Surface】You can easily hang your phone anywhere with a smooth surface. All you do is you clean off your phone and smooth surface. It is STURDY and it not only sticks to mirrors, it also sticks to windows, it sticks to refrigerators, tiles and other clean, flat surfaces.
  • 【Press Down Firmly Every 30 Minutes】Use your palm or fingers to press the phone down firmly and check it's secure before letting go. Apply even pressure for a few seconds to allow the suction cup to adhere properly. To maintain the grip and prevent accidental falls, it's a good practice to periodically reapply pressure to the suction cup.

All-files access: a narrow exception

MANAGE_EXTERNAL_STORAGE grants broad read and write access to shared storage, access to MediaStore.Files, USB OTG and SD-card roots, and broad internal-storage write access subject to exclusions. It still does not let an app read other apps’ private app-specific directories.

Android identifies file managers, backup and restore tools, antivirus and security utilities, document-management tools, on-device search, encryption utilities, and device-to-device migration as examples of core functions that may justify this permission. Google Play evaluates requests, so the permission must support the app’s primary purpose rather than a convenience feature. The official guidance is to request it only when SAF or MediaStore cannot effectively satisfy the core workflow.

Decision test before requesting it

  • Can the feature operate inside your app-specific directory? If yes, keep it private.
  • Is the output a photo, video, audio item, or download? If yes, publish it through MediaStore.
  • Can the user select each document or folder involved? If yes, use SAF and persist the grants needed for later work.
  • Does the app’s defining job require scanning or transforming broad shared storage, removable roots, or USB storage? Document that requirement and verify that it fits an eligible category before requesting all-files access.

A practical migration plan for legacy path-based apps

  1. Inventory and classify. List every legacy path and label each file as private app data, shared media, or a user document. Include files on removable storage and files your app creates for export.
  2. Move private data. Put private files in internal storage or the directory returned by getExternalFilesDir(). For shared non-media output, use an app-owned subdirectory of Download or a document location selected through SAF.
  3. Insert shareable media. Create photos, videos, audio, and downloads through the matching MediaStore collection. Save the returned URI and relevant metadata in your database.
  4. Replace document browsing. Use ACTION_OPEN_DOCUMENT, ACTION_CREATE_DOCUMENT, and ACTION_OPEN_DOCUMENT_TREE instead of enumerating arbitrary paths. Persist URI permissions for documents or folders that need long-term access.
  5. Refactor readers and writers. Route normal I/O through ContentResolver streams. Add a path adapter only at the boundary of a library that cannot consume a URI.
  6. Test Android 11 and newer. Verify behavior when the user selects storage roots, Download, Android/data, or Android/obb; each protected case should fail clearly and offer a supported alternative.
  7. Review permissions and policy. Remove obsolete broad-storage requests. Request MANAGE_EXTERNAL_STORAGE only when the app’s documented core function truly needs its scope.

Common failure modes and fixes

The app cannot open a path under Android/data

This is an expected Android 11+ restriction, not a missing string or slash in the path. Redesign the workflow around a user-granted document URI, an app-specific directory, or an exported copy in a supported shared collection.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A saved path works until a file is moved

Store the MediaStore or SAF URI and provider metadata as the durable reference. Re-query or reopen through the provider instead of assuming the old absolute path remains valid.

Uninstall deleted an important file

The file was stored in app-specific storage. Put user-owned media in MediaStore or let the user choose a document destination with SAF when retention outside the app is part of the requirement.

A cloud document has no usable File object

That is normal for a provider-backed URI. Stream the content with ContentResolver; copy it into an app-specific working file only when a library requires local random access.

The durable rule for 2026

Design storage around ownership and lifecycle, not around the directory tree visible on one device. Internal and app-specific storage protects private state, MediaStore publishes indexed media that should survive uninstall, and SAF carries the user’s authority across local, removable, and cloud providers. Filesystem paths remain a useful interoperability escape hatch, but keeping URIs and provider contracts as the source of truth is what makes an Android storage implementation resilient across API levels and devices.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

AndroidMANAGE_EXTERNAL_STORAGEMediaStoremobile developmentSAFscoped storageStorage Access Framework

Leave a Reply

Your email address will not be published. Required fields are marked *

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.