Почему нельзя обратиться к файлам напрямую в Android

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

Ответ

В Android доступ к файлам осуществляется через ContentProvider или Storage Access Framework (SAF) из-за sandbox-модели безопасности. Каждое приложение работает в изолированном пространстве (private storage), а доступ к общим файлам требует явных разрешений.

Пример:

// Чтение файла из внутреннего хранилища
val file = File(context.filesDir, "myfile.txt")
val text = file.readText()

Для внешнего хранилища (после Android 10) нужны:

  • Manifest.permission.READ_EXTERNAL_STORAGE (для MediaStore)
  • Или SAF (Intent.ACTION_OPEN_DOCUMENT) для выбора файлов пользователем.

Причина: Защита данных пользователя и предотвращение несанкционированного доступа.