Application Data & Files

Android uses a file system that's similar to disk-based file systems on other platforms. The system provides several options for saving app data:

  • App-specific storage - internal storage to saving sensitive information that other apps should not be able to access.

  • Shared storage - storage for files that the app shares with other apps, including media, documents, and other files.

  • Preferences - storage for private, primitive data in key-value pairs.

  • Databases - storage for structured data in a private database using the Room persistence library.

Type of contentAccess methodPermissions needed

App-specific files

From internal storage, getFilesDir() and getCacheDir()

From external storage, getExternalFilesDir() and getExternalCacheDir()

Never needed for internal storage

Not needed for external storage when your app is used on devices that run Android 4.4 (API level 19) or higher

Shareable media files (images, audio files, videos)

READ_EXTERNAL_STORAGE when accessing other apps' files on Android 11 (API level 30) or higher

READ_EXTERNAL_STORAGE or WRITE_EXTERNAL_STORAGE when accessing other apps' files on Android 10 (API level 29)

Permissions are required for all files on Android 9 (API level 28) or lower

Other types of shareable content, including downloaded files

Storage Access Framework


Key-value pairs



Structured data

Room persistence library



Last updated