Невозможно записать файлы на SDCard Android - PullRequest
6 голосов
/ 11 июня 2011

У меня есть приложение, которое сохраняет файлы резервных копий на SD-карту. Он отлично работает на HTC Nexus One и других телефонах Android, но на некоторых телефонах он не работает (чтение или запись).

В манифесте я установил это:

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

Например (когда я устанавливаю путь для записи файла):

OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory()
                    + "/mydata.dat");
//Writing file...(It doesn't work)

Как определить правильный путь SD-карты для правильного управления файлами?

Ответы [ 3 ]

0 голосов
/ 25 июля 2013

У меня Sony Xperia tipo dual и это:

FILE* pFile = fopen("/mnt/sdcard/mydata.dat","w+");

и это:

FILE* pFile = fopen("/sdcard/mydata.dat","w+");

Оба работают нормально.(Я сделал это на родном языке)

0 голосов
/ 25 июля 2013

Как правило, Android не позволяет вам записывать файл напрямую в корень SDCard. Вы должны создать папку в корне SDCard, а затем записать свой файл во вновь созданную папку.

Попробуйте, и это должно сработать.

0 голосов
/ 11 июня 2011

Когда вы говорите "это не работает" .... что именно происходит? Вы имеете в виду, что программа работает без жалоб, но файл не записывается на SDCard, или вы имеете в виду что-то еще?

Если файл просто не попадает туда, это не ваша вина, это ошибка производителя телефона. Я видел несколько устройств, которые возвращают "/ mnt / sdcard" из getExternalStorageDirectory (), однако это не совсем путь к sdcard! Например, по крайней мере на одном устройстве Motorola и на Samsung Galaxy Tab (7 дюймов) возвращается / mnt / sdcard, хотя это указывает на внутреннее хранилище, а внешнее хранилище на каждом из этих устройств - / mnt / sdcard-ext .

Нет ничего законного, что вы можете с этим поделать - OEM обманывает вас. Если вы хотите взломать обходной путь, вы можете прочитать / proc / mounts и попытаться найти фактический путь к sdcard, но / mnt / sdcard также будет отображаться там, и не существует гарантированного способа узнать правду все устройства.

...