Externe SDCard Dateipfad für Android

? Bowie @ | Original: StackOverFlow
---

Stimmt es, dass der Dateipfad zu externen SDCard auf Android-Geräten sind immer " / storage / extSdCard " ? Wenn nicht, wie viele Variationen gibt es?

Ich brauche es für meine App, die Verfügbarkeit von externen SDCard zu testen.

Ich bin mit Titanium, hat es eine Methode Titanium.Filesystem.isExternalStoragePresent () aber es ist immer true zurück, auch externe SDCard nicht montiert ist .

Ich denke, es erkennt SDCard auf lokaler Speicher damit return true . Aber was ich wirklich will, ist festzustellen, ob physikalische SDCard montiert ist oder nicht.

Kann ich das durch Erfassen der Existenz Datei " / storage / extSdCard " allein?

Thanks.

---

Top 5 Antwort

1Kishan @

Verwenden Sie diese Option, wenn es für Sie arbeiten, weil dies eine perfekt funktioniert für mich :

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 @

Stimmt es, dass der Dateipfad zu externen SDCard auf Android-Geräten sind immer " / storage / extSdCard " ? Wenn nicht, wie viele Variationen gibt es?

Leider der Pfad zu dem externen Speicher ist nicht immer gleich laut Hersteller . Mit Environment.getExternalStorageDirectory() finden Sie den normalen Weg zurück zum SD-Karte, die mnt/sdcard/ . Aber für Samsung-Geräte zum Beispiel, ist die SD-Karte Weg entweder unter mnt/extSdCard/ oder unter mnt/external_sd/ .

So eine Vorgehensweise wäre es, die Existenz von externen Verzeichnis nach dem Pfad von jedem Hersteller verwendet zu überprüfen. Mit so etwas wie dieses :

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";
            }
        }
    }

Aber was ich wirklich will, ist festzustellen, ob physikalische SDCard montiert ist oder nicht.

Ich habe nicht den Code versuchen noch, aber der Ansatz Dmitriy Lozenko in diesem http://stackoverflow.com/questions/11281010/how-can-i-get-external-sd-card-path-for-android-4 -0 ist viel interessanter . Seine Methode gibt den Pfad aller montiert SD-Karten auf sytem unabhängig vom Hersteller .