Ответ
В 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) для выбора файлов пользователем.
Причина: Защита данных пользователя и предотвращение несанкционированного доступа.
Ответ 18+ 🔞
Да ты посмотри, какая хитрая жопа у этих андроидов! Ну реально, ёперный театр, а не система. Сидит каждое приложение, как в своей отдельной камере, и нихуя не видит, что у соседа творится. Свои файлики в своём углу жуёт — и довольна.
А как только захотелось в общее хранилище сунуться, где фотки, музыка и прочий скарб лежит — тут тебе сразу волнение ебать начинается. Нужно либо разрешение выпрашивать, как последний попрошайка: «Разрешите, мол, почитать ваши внешние файлы, я хороший!». Либо запускать целый цирк с SAF — это когда ты не сам лезешь, а пользователю говоришь: «Слушай, дружище, сам выбери, какой файл мне дать, а я ручками не шастаю».
Вот смотри, как из своего угла файл прочитать:
// Чтение файла из внутреннего хранилища
val file = File(context.filesDir, "myfile.txt")
val text = file.readText()
Всё, бля, просто и без нервов. Свой угол — свои правила.
А вот если тебе уже из общего доступа что-то надо, то готовься к бюрократии. После десятого андроида там вообще терпения ноль ебать. Нужно либо вот это разрешение в манифесте прописать: READ_EXTERNAL_STORAGE (но оно только для медиафайлов через MediaStore работает, а не для всего подряд!). Либо, повторюсь, этот самый SAF — Intent.ACTION_OPEN_DOCUMENT — запускаешь, и пользователь сам тебе файл тыкает. Красота, да?
А причина-то вся в чём? А в том, что раньше-то была вакханалия! Любое приложение, которое ты поставил, могло шариться по всей твоей файловой системе, как у себя дома. Фотки читать, документы копировать — в общем, доверия ебать ноль было к таким аппам. Вот гугл и закрутил гайки, чтобы твои данные не утекали к первому встречному пидарасу шерстяному. Теперь вы ходите по охуенно тонкому льду, когда просите доступ к файлам. Защита, бля, пользователя — святое дело.