GetExternalStorageDirectory не работает
Я пытаюсь сохранить файл на SD-карте на своем Samsung Galaxy Nexus, работающем 4.2.2. Из моего приложения я использую
Environment.getExternalStorageDirectory()
Но он возвращает
/storage/emulated/0/
Это не то место, где находится моя SDcard-информация. Есть ли какой-либо рабочий метод, который я могу использовать для получения правильного пути к моей SD-карте?
Ответы
Ответ 1
Собственно, это правильное местоположение.
Начиная с android 4,2, Google представила несколько учетных записей пользователей. У каждого пользователя есть собственное внешнее хранилище, у которого есть идентификатор пользователя на пути к сохранению уникальности.
Основной (по умолчанию) идентификатор пользователя равен 0. Таким образом, вы получаете /storage/emulated/0/
как путь к внешнему хранилищу.
Ответ 2
Я только что узнал, что это способ Джелли Bean справиться с отсутствием разрешения android.permission.WRITE_EXTERNAL_STORAGE
. Я не видел такого поведения со старыми версиями Android.
Просто добавьте эту строку в свой AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Ответ 3
Environment.getExternalStorageDirectory()
относится к тому, что производитель устройства считается "внешним хранилищем". Я могу быть чем-то другим, кроме SD-карты.
Здесь вы можете получить более подробную информацию: Найти местоположение внешней SD-карты
Ответ 4
Sure? Где, по вашему мнению, установлена ваша SD-карта? Попробуйте сделать ls -l
в этом каталоге - это, вероятно, символическая ссылка на /storage/emulated/0/
.
Ответ 5
Я думаю, что из-за использования эмулятора genymotion,
путь верен, и в Eclipse он находится в
File Explorer - > mnt - > shell - > emulated -> 0
надеюсь, что это поможет;)
Ответ 6
Я как-то потерял свою символическую ссылку в /storage/emulated/ 0, вызвав аналогичный сбой. То, что я сделал, было использовать приложение камеры, чтобы сделать снимок. Я заметил, что в деталях изображения указано, что он находится внутри /storage/emulated/ 0, хотя этот каталог не существует из файлового проводника. Затем я перезагрузил телефон. После перезагрузки ссылка существовала.
Ответ 7
Попробуйте использовать getExternalFilesDir()
или getExternalStoragePublicDirectory()
.
От Документация по Android 4.2