Android: сохранение файлов на SD-карту

Я пытаюсь сохранить файл из своего приложения во внешнее хранилище устройства. В частности, я пытаюсь сохранить звук.

Я следовал каждому «учебнику» по этому поводу, и ни один из них не показался мне особенно запутанным, но это просто не сработает для меня. На SD-карте вообще не создается никаких файлов, тем более фактическая передача информации.

Я предположил, что каким-то образом не нахожу правильный путь к карте, но что бы я ни пробовал, это не работает. Я пытался ввести только «/sdcard/», а также использовать метод getExternalStorageDirectory() среди других случайных экспериментов.

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


person Archaos    schedule 03.02.2011    source источник
comment
возможный дубликат Разрешение на запись на SD-карту   -  person Daniel A. White    schedule 03.02.2011
comment
Вы пытались сохранить его в Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC). На устройствах версии 2.2 и выше это папка «Музыка» на SD-карте.   -  person Zelimir    schedule 03.02.2011
comment
Я использую Droid X на 2.2.1 в качестве тестового устройства, и у меня нет папки «Музыка» на SD-карте. Кроме того, когда я использую предложенный вами метод, он пытается использовать путь /mnt/sdcard/Music. Это /mnt/ должно быть там? Я думал, что он должен начинаться с /sdcard/. Я попытался жестко запрограммировать его как sdcard/Music и даже попытался использовать файл (путь).mkdirs(), чтобы увидеть, создаст ли он каталоги, но, похоже, ничего не изменилось.   -  person Archaos    schedule 03.02.2011


Ответы (2)


Вы абсолютно уверены, что файл не сохраняется на SD-карту? Я думал, что у меня такая же проблема. Оказалось, что я все время правильно сохранял на SD-карту, но галерея не обновлялась для отображения только что сохраненных файлов. Используйте Astro File Manager, чтобы убедиться, что файл еще не сохранен на карту. Если это проблема, добавьте эту строку, чтобы обновить галерею:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
                + Environment.getExternalStorageDirectory())));
person Mike Ortiz    schedule 08.08.2011

Этот ответ должен помочь: Разрешение на запись на SD-карту Android. Не забывайте, что вам нужно объявить в файле Android.xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

person I82Much    schedule 03.02.2011
comment
У меня определенно установлены разрешения, так что это не для меня. - person Archaos; 03.02.2011