Android - Ошибка открытия FileNotFoundException: EACCES (В доступе отказано) - PullRequest
0 голосов
/ 19 января 2020

У меня есть приложение, которое при входе в систему загружает изображения с моего сервера. при первом входе в систему все работает нормально, но когда я удаляю приложение и устанавливаю его снова, я получаю следующее исключение:

java .io.FileNotFoundException: / storage / emulated / 0 / Android / data / com.gilapp. android .app / files / images / book_118.png: открыть не удалось: EACCES (разрешение запрещено)

и не удается сохранить изображение.

это происходит, когда я пытаюсь создать выходной поток:

OutputStream output = new FileOutputStream(filePath);

Изображения загружаются нормально, только когда я делаю вторую установку после того, как я go в Информация о приложении -> Хранилище -> очистить data

Еще одним важным моментом является то, что это происходит только в планшете Samsung: SM-T800 (API level 23)

В других устройствах этого не происходит, устройства, которые я тестирую: Samsung SM-G900H (API level 23), Asus P028 (API level 24), Samsung SM-G950F (API level 28)

Ответы [ 3 ]

1 голос
/ 30 апреля 2020

Если ваше приложение указывает на android версию 10 и выше

В манифест включите в приложение добавление


android:requestLegacyExternalStorage="true"


1 голос
/ 19 января 2020

Вам необходимо получить Разрешение во время выполнения для записи в хранилище. перед сохранением файлов проверьте права доступа. Также есть библиотека для этой работы: Android -Arsenal

лучше использовать FileProvider для доступа к файлам в место хранения.

0 голосов
/ 19 января 2020

При удалении приложения все файлы в getExternalFilesDir() удаляются, следовательно, каталог /images исчез

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

Не во время выполнения. Не в манифесте.

Но вы хотите их в каталоге .... / images.

Вы должны позаботиться об этом каталоге самостоятельно.

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

...