LINUX.ORG.RU

Открыть файл в 2024 - Anroid

 


0

1

Здравствуйте. Задача минимум - открыть файл для чтения. Произвольный файл. Задача максимум - записать файл. Обычный, локальный файл. Почка что, все операции возвращают permission denied, даже чтение. Что делать? Каковы пути?

Перемещено mono из mobile

★★★★

Последнее исправление: lenin386 (всего исправлений: 2)

Сначала они жаловались, что в андроид легко получить доступ к файлам, теперь опять недовольны.

Определитесь.

anonymous
()
Ответ на: комментарий от HE_KOT

Вот тут я может быть очень простого не понимаю. Это мой первый апп под андроид.

fopen(«filename», «w+»); даёт ошибку «Read-only file system»,

fopen(«filename», «r»); даёт ошибку «No such file or directory». Логично, его там нет. Но как он там появится, если см. выше?

fopen(«/storage/emulated/0/Download/filename») - Permission denied. Догадываюсь, что надо запросить разрешение на пользование внешними

  if (checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
            Log.v("TAG","Permission is granted");
            else
            {
            Log.v("TAG", "Permission is NOT granted");
            ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
             }

Это почему-то не работает. Студия пишет, что оно deprecated, но что делать - не понятно.

lenin386 ★★★★
() автор топика
Ответ на: комментарий от vvn_black

Студия пишет вот что :

READ_EXTERNAL_STORAGE is deprecated (and is not granted) when targeting Android 13+. If you need to query or interact with MediaStore or media files on the shared storage, you should instead use one or more new storage permissions: READ_MEDIA_IMAGES, READ_MEDIA_VIDEO or READ_MEDIA_AUDIO. More... (Ctrl+F1)

Но это не то. Мне не нужно картинки, видео и аудио. Мне нужен просто файл открыть.

lenin386 ★★★★
() автор топика
Ответ на: комментарий от lenin386

Честно говоря, сейчас стоит брать телефон сразу с нужным кол-вом места сразу, с сд-картами постоянно какие-то проблемы: то одно приложение их не поддерживает, то другое, тот же syncthing может использовать только свою директорию на сд-карте, которая запрятана в Android/data/что-то_там.

MoldAndLimeHoney
()
Ответ на: комментарий от MoldAndLimeHoney

Гугл ограничивает загрузку в маркет приложений с «лишними» разрешениями. Например, LibreTorrent не умеет писать на карточку, Total Commander не умеет устанавливать приложения. Но на офсайтах есть полные версии, возможно, и с сабжем так.

HE_KOT
()
Ответ на: комментарий от HE_KOT

Мне пока не до маркета. В общем, сейчас у меня ощущение, что READ_EXTERNAL_STORAGE на новых андроидах вообще не работает, безусловно. Как тогда закачивать произвольные файлы в АПП - не понятно. Через вэб штоле? Но файловые менеджеры как-то работают? Может, для них какие-то секретные исключения? UPD: READ_MEDIA_IMAGES - работает. Фоточки - открывает. Но мне фоточки открывать не надо.

lenin386 ★★★★
() автор топика
Последнее исправление: lenin386 (всего исправлений: 2)
Ответ на: комментарий от NickNotNick

Да вроде всё так, как там, сделано. Не запрашивает разрешение, тупо игнорится функция запроса разрешение на владение флешкой. Есть идея насчёт того, что те апп, которые работают, скомпилинены под предыдущие API. Идея тоже так сделать хорошая, конечно. Но рано или поздно, эти API объявят устаревшими и запускаться АПП перестанет. Судя по всему, это политика, надо изворачиваться.

lenin386 ★★★★
() автор топика