Android: абсолютное местоположение внешней SD-карты - PullRequest
6 голосов
/ 31 августа 2011

У меня очень простой вопрос, но пока я не могу найти ответ на этот вопрос."Есть ли способ найти абсолютный путь INTERNAL STORAGE DIRECTORY и EXTERNAL STORAGE DIRECTORY(SDCARD) в Android?"

Пожалуйста, не рекомендуется использовать Environment.getExternalStorageDirectory, так как обычно он возвращает путь для внутреннего хранилища или носитель WHATEVER выбран по умолчанию операционной системой Android.

Ответы [ 6 ]

5 голосов
/ 31 августа 2011

Это уже спрашивалось на SO, используйте поиск. Короче говоря, «внешнее хранилище» больше похоже на «общее хранилище», и оно может быть или не быть реализовано на реальной SD-карте. Некоторые устройства имеют дополнительную SD-карту, не используемую в качестве внешнего хранилища. Если это то, о чем вы просите, в настоящее время нет общедоступного API для доступа к местоположению монтирования, и оно зависит от устройства. Вы можете проверить /proc/mount, чтобы увидеть, что в настоящий момент смонтировано, и перейти оттуда.

2 голосов
/ 19 мая 2014

Эта ссылка из руководства по настройке Android. Я предполагаю, что это рекомендуется и не требуется.

https://source.android.com/devices/tech/storage/config-example.html

Итак, чтобы получить SDCARD, вы можете просто сделать.

String storagePath = System.getenv("SECONDARY_STORAGE");

if (storagePath == null) {
    return null;
} else {
     String[] storagePathArray = storagePath.split(":");
     return storagePathArray[0];
}

EXTERNAL_STORAGE похоже на все, что у меня есть.

SECONDARY_STORAGE был определен на моем LG GTab 8.3 и на моих Samsung Tab 2 & 3, но не на моем Galaxy S (2.3) или моем Dell Venue (4.3). На устройствах Samsung, кажется, сначала было несколько путей с SD-картой, таким образом, разделение.

1 голос
/ 31 августа 2011

Вы должны использовать

Environment.getExternalStorageDirectory().getAbsolutePath()
0 голосов
/ 06 сентября 2015

На Samsung Galaxy Note 10.1 2014 года выпуска SM-P600 (и я бы предположил, что большинство других заметок samsung galaxy того же года изготовления), полный путь к «реальной» внешней SD-карте, это:

/storage / extSdCard /

Я нашел мой, используя терминал, и сделал:

cd / storage / extSdCard /

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

0 голосов
/ 13 февраля 2014

String path = ExternalStorageDirectoryPath + "/ foldername /";

0 голосов
/ 19 декабря 2013

Я думаю, что / storage / sdcard0 / используется для внутренней SD-карты и / storage / sdcard1 / используется для внешней SD-карты, если есть две опции хранения. если вы проверяете, присутствует ли файл в любом из sdcard или нет, вам следует проверить все возможные пути.

 String path;    
 if(new File("/storage/sdcard/yourpath").exist())
     {
        path="/storage/sdcard/yourpath";
     }
 else if(new File("/storage/sdcard0/yourpath").exists())
     {
        path="/storage/sdcard0/yourpath";
     }
 else if(new File("/storage/sdcard1/yourpath").exists())
     {
        path="/storage/sdcard1/yourpath";
     }
...