2013-07-09 3 views
7

Я хочу загрузить некоторые файлы и сохранить их во внутреннюю память телефона/вкладки. Пробовал Samsung Galaxy Note 2 и Galaxt Tab 10.1. Когда я использую /storage/sdcard0/, код работает успешно, но когда я использую Galaxy Nexus 3, код не работает.Android, получающий внешнее хранилище Абсолютный путь

Я хочу получить абсолютный путь к внутреннему хранилищу phoe или tab 'Absolute Path.

Возможно ли, если да, то каким образом?

+0

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

ответ

25

Когда я использую/хранение/sdcard0/на них код выполняется успешно, но когда я использую Galaxy Nexus 3 код не удается.

/storage/sdcard0/ не является внутренним хранилищем. Это внешнее хранилище.

(кстати, так как нет ни одного устройства под названием «Galaxy Nexus 3», я предполагаю, что вы просто имел в виду «Galaxy Nexus»)

Чтобы найти места на внутренней хранения для вашего приложения, используйте getFilesDir(), призвал любой Context (например, ваш Activity, чтобы получить File объект.

чтобы получить место на внешнего хранения уникального для вашего приложения, используйте getExternalFilesDir(), называемый на любой Context (например, ваш Activity, чтобы получить File.

Чтобы получить стандарт расположение на внешнего хранения общих типов файлов (например, фильмы), используйте getExternalStoragePublicDirectory() на Environment.

Чтобы получить корень из внешнего хранения, использования getExternalStorageDirectory() на Environment. Это, однако, в настоящее время считается неаккуратным программированием, поскольку оно побуждает разработчиков просто помещать файлы в случайные местоположения.

+0

Я новичок в программировании на Android. Я сохраняю файлы в хранилище.Например, когда я смотрю на свой Galaxy Note 2/storage/sdcard0/я вижу Whatssapp, Music, Alarm sth .. Как я могу получить/storage/sdcard0/path для всех телефонов/вкладок. Благодарю. –

+2

@ ErdinçÖzdemir: используйте 'getExternalStorageDirectory()' on 'Environment'. Это, однако, в настоящее время считается неаккуратным программированием, поскольку оно побуждает разработчиков просто помещать файлы в случайные местоположения. Кроме того, * конкретный * путь, который представляет собой внешнее хранилище, зависит от версии производителя и ОС. Вот почему вы используете методы, а не жестко закодированные строки, чтобы найти местоположения на внешнем хранилище. – CommonsWare

+0

@CommonsWare: у меня есть внутреннее хранилище на моем устройстве LG optimus, и он указывает внутреннее хранилище на **/storage/sdcard0/**, я проверил его через файловый менеджер ... поэтому он немного запутывает, указывает ли sdcard0 на внутренний или внешний – Shashank

7

Почему вы не можете использовать Environment.getExternalStorageDirectory() для получения /storage/sdcard0/ пути от кода?

необходимо добавить разрешения, а

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

Найденное решение первых редактировать эмулятор:

  1. Перейти к Android Virtual Диспетчера устройств, а затем редактировать эмулятор
  2. Set скажет, 100 МБ для SD й карты для уважаемого эмуляторя, скажет Ok
  3. не
  4. Сохранить и закрыть эмулятор и запустить

Он работал для меня, приложение больше не дает ошибку и работает нормально.