Подтвердить что ты не робот

Android Exception: java.io.IOException: open failed: EACCES (Permission denied)

По какой-то странной причине я постоянно сталкиваюсь с проблемой с различными типами устройств Android для сохранения захваченных изображений на устройстве.

Вот подробный журнал ошибок, о том, что на самом деле получаю.

java.io.IOException: open failed: EACCES (Permission denied)
at java.io.File.createNewFile(File.java:940)
at com.parkhya.pick_for_shareAflash.HomeActivity.resizeImage(HomeActivity.java:456)
at com.parkhya.pick_for_shareAflash.HomeActivity.onActivityResult(HomeActivity.java:393)
Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
at java.io.File.createNewFile(File.java:933)

Несмотря на то, что все другие приложения для Android, такие как Instagram и другие, могут сохранять снимки, нажатые на камеру, на устройствах. Кто-нибудь, можете ли вы предложить, что мне делать, чтобы мое приложение сохраняло снимки камеры в SD-карте.

4b9b3361

Ответ 1

добавьте разрешение для того, чтобы приложение могло писать на внешнее хранилище.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Позволяет программе читать данные из внешнего хранилища.

Любое приложение, объявляющее разрешение WRITE_EXTERNAL_STORAGE, неявно получает это разрешение.

Это разрешение введено в действие, начиная с уровня API 19. До уровня API 19 это разрешение не применяется, и все приложения все еще имеют доступ к чтению из внешнего хранилища. Вы можете протестировать свое приложение с помощью разрешения, разрешенного включением Protect USB storage в разделе "Параметры разработчика" в приложении "Настройки" на устройстве под управлением Android 4.1 или выше.

Ответ 2

Это может вам помочь. Я сталкиваюсь с той же проблемой при записи файла на SD-карте. Я установил все необходимые разрешения для записи файла, но я использовал объект файла, как показано ниже:

Неправильно:

File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+fileName);

Правильно:

File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), fileName);

Это означает, что путь был неправильным.

Ответ 3

Решение, которое я нахожу,

изменить эмулятор 1. перейдите в диспетчер виртуальных устройств Android, а затем отредактируйте эмулятор 2. установите 100 МБ для Sd-карты для уважаемого эмулятора и скажите "ОК" 3. сохранить и закрыть эмулятор и запустить 4. Сохраненный путь: нажмите DDMS mnt/sdcard/yourfilename это работало для меня, приложение не дает Ошибка и работает

Ответ 4

Обратите внимание на следующую ловушку: кто-то написал

<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>

в AndroidManifest.xml. Я хотел сохранить файлы и добавил указанную строку и получил

<uses-permission android:name="android.permission.INTERNET" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</uses-permission>

что является плохим синтаксисом. Это должно быть

<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

или

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />