Внешний путь SDCard файлов для Android

? Bowie @ | Original: StackOverFlow
---

Правда ли, чтопуть к файлу внешнего SDCard на устройствах Android всегда " / хранение / extSdCard " ? Если нет, сколько вариации есть ?

Мне это нужно для моего приложения, чтобы проверить наличие внешнего SDCard .

Я использую титана, он имеет метод Titanium.Filesystem.isExternalStoragePresent () но он всегда возвращает истину, даже внешний SDCard не установлен .

Я думаю, что это обнаружить SDCard в локальном хранилище, таким образом, вернуться правда. Но то, что я действительно хочу это обнаружить ли физическое SDCard установлен или нет.

Могу ли я сделать это путем обнаружения существование файла " / хранение / extSdCard " в одиночку?

Thanks.

---

Top 5 ответ

1Kishan @

Используйте это, если это работает для вас, потому что это один работает прекрасно для меня :

Map<String, File> externalLocations = MemoryStorage
            .getAllStorageLocations();
    File sdCard = externalLocations.get(MemoryStorage.SD_CARD);
    File externalSdCard = externalLocations
            .get(MemoryStorage.EXTERNAL_SD_CARD);
    if (sdCard != null) {
        Log.i("TAG", "Internal SD path: " + sdCard.getPath());

    }
    if (externalSdCard != null) {
        Log.i("TAG", "External SD path: " + externalSdCard.getPath());

    }
2Digoun @

Правда ли, чтопуть к файлу внешнего SDCard на устройствах Android всегда " / хранение / extSdCard " ? Если нет, сколько вариации есть ?

К сожалениюпуть к внешней памяти не всегдаже в зависимости от производителя . Использование Environment.getExternalStorageDirectory() вернется вам нормальный путь для SD карты, которая является mnt/sdcard/ . Но для устройств Samsung, например ,путь SD ​​карта либо под mnt/extSdCard/ или под mnt/external_sd/ .

Так один из способов, чтобы продолжить было бы проверить существование внешнего каталога в соответствии с пути, используемого каждым производителем. Что-то вроде этого:

mExternalDirectory = Environment.getExternalStorageDirectory()
            .getAbsolutePath();
    if (android.os.Build.DEVICE.contains("samsung")
            || android.os.Build.MANUFACTURER.contains("samsung")) {
        File f = new File(Environment.getExternalStorageDirectory()
                .getParent() + "/extSdCard" + "/myDirectory");
        if (f.exists() && f.isDirectory()) {
            mExternalDirectory = Environment.getExternalStorageDirectory()
                    .getParent() + "/extSdCard";
        } else {
            f = new File(Environment.getExternalStorageDirectory()
                    .getAbsolutePath() + "/external_sd" + "/myDirectory");  
            if (f.exists() && f.isDirectory()) {
                mExternalDirectory = Environment
                        .getExternalStorageDirectory().getAbsolutePath()
                        + "/external_sd";
            }
        }
    }

Но то, что я действительно хочу это обнаружить ли физическое SDCard установлен или нет.

Я не пробовал код пока нет, ноподход Дмитрия Лозенко в этом http://stackoverflow.com/questions/11281010/how-can-i-get-external-sd-card-path-for-android-4 -0 гораздо интереснее . Его метод возвращает путь всех подключенных карт SD на системном, независимо от производителя .