Ответ
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.