Что такое Scoped Storage

«Что такое Scoped Storage» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Scoped Storage — это механизм в Android, ограничивающий доступ приложений к файлам других приложений и общим хранилищам (вроде SD-карты) для повышения безопасности и конфиденциальности.

Ключевые моменты:

  • Приложения могут работать только в своем выделенном хранилище (/data/data/<package_name>).
  • Для доступа к общим медиафайлам (фото, видео, аудио) используется Storage Access Framework (SAF) или MediaStore API.
  • Прямой доступ к внешнему хранилищу (/sdcard/) запрещен (начиная с Android 10).

Пример использования MediaStore:

val contentValues = ContentValues().apply {
    put(MediaStore.Images.Media.DISPLAY_NAME, "my_image.jpg")
    put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
}
val uri = contentResolver.insert(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    contentValues
)

Исключения:

  • Приложения могут запрашивать MANAGE_EXTERNAL_STORAGE, но это требует одобрения Google Play.