Запись файлов на внешнее хранилище в Android с ошибкой

Как видно из названия, у меня возникают проблемы с записью файлов во внешнее хранилище. Мое устройство для отладки – это Nexus 5. Дело в том, что я могу отлично читать файлы с устройства (я пытался с ними в папке загрузки), но не могу их записать. Я знаю, что должен сделать это, пока устройство не подключено к компьютеру. Но это тоже не работает.

На самом деле, я пробовал читать состояние SD-карты до того, как писал ей (что, конечно, не сработало). Состояние показало как «смонтировано», когда устройство было подключено к моему компьютеру или нет. И я сравнил состояние с Environment.MEDIA_MOUNTED_READ_ONLY и Environment.MEDIA_MOUNTED без каких-либо успехов. Мое устройство ни в одном из этих состояний.

Одна вещь, которую вы должны знать, это то, что в моем телефоне нет внешней SD-карты, поскольку она является внутренней. Это приводит к тому, что мое устройство имеет каталог «/ storage / emulated / 0 / …» для внешнего хранилища.

Я также должен указать, что в моем манифесте Android были реализованы следующие теги:

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

Я не знаю, что может произойти. Еще одна вещь, которая может помочь, заключается в том, что я пытался управлять файлами с помощью winrar (для Android), и мне удалось удалить файлы с подключенного к моему компьютеру устройства, а также без его подключения. Поэтому я не знаю, что делать.

Код, который я использую для записи файла, следующий. Имейте в виду, что он должен прочитать файл изображения (который он делает), преобразовать его в строку, преобразовать обратно в изображение и затем сохранить в папке «Загрузка»:

  File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + "/base_image.jpg"); // Reading a Image file from file system FileInputStream imageInFile = new FileInputStream(file); byte imageData[] = new byte[(int) file.length()]; imageInFile.read(imageData); // Converting Image byte array into Base64 String String imageDataString = encodeImage(imageData); // Converting a Base64 String into Image byte array byte[] imageByteArray = decodeImage(imageDataString); File newFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "converted_image.jpg"); //Write a image byte array into file system FileOutputStream imageOutFile = new FileOutputStream(newFile); imageOutFile.write(imageByteArray); imageInFile.close(); imageOutFile.close(); 

Что мне делать?

Solutions Collecting From Web of "Запись файлов на внешнее хранилище в Android с ошибкой"

Просто исправьте ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE для android.permission.WRITE_EXTERNAL_STORAGE в вашем uses-permission .

Я столкнулся с этой проблемой, использование UPPERCASE не является полезным.

FileOutputStream НЕ автоматически создает файл, если он не существует.

Итак, вам нужно проверить и создать, если ваш файл не существует.

 if(!newFile.exists()) { newFile.createNewFile(); } 

Надеюсь эта помощь!