Как видно из названия, у меня возникают проблемы с записью файлов во внешнее хранилище. Мое устройство отладки - это Nexus 5. Дело в том, что я могу отлично читать файлы с устройства (я пытался с ними в папке загрузки), но не могу их записать. Я знаю, что должен сделать это, пока устройство не подключено к компьютеру. Но это тоже не работает.Запись файлов на внешнее хранилище в Android с ошибкой
На самом деле, я пробовал читать состояние SD-карты перед тем, как писать (конечно, не работает). Состояние показало, что «смонтировано» либо при подключении устройства к компьютеру, либо нет. И я сравнил состояние с Environment.MEDIA_MOUNTED_READ_ONLY
и Environment.MEDIA_MOUNTED
без каких-либо успехов. Мое устройство ни в одном из этих состояний.
Одна вещь, о которой вы должны знать, это то, что на моем телефоне нет внешней SD-карты, поскольку она является внутренней. Это приводит к тому, что мое устройство имеет каталог «/ storage/emulated/0/...» для внешнего хранилища.
Я должен также отметить, что я реализовал следующие теги в моей Android Manifest:
<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();
Что я должен делать?
Вы уверены, что файл выходит на него? – Raghunandan
Я создаю новый файл. Или, по крайней мере, это то, что я пытаюсь. Я получаю исключение File Not Found Exception при попытке создать его и ошибку EACCES (Permission denied). Это моя главная проблема. Я делаю что-то неправильно? – blastervla