Percorso del file SDCard esterno per Android

? Bowie @ | Original: StackOverFlow
---

E 'vero che il percorso del file di SDCard esterno su dispositivi Android sono sempre " / storage / extSdCard " ? Se no, quante variazioni ci sono ?

Ne ho bisogno per la mia App per verificare la disponibilità di SDCard esterna .

Sto usando titanio, ha un metodo di Titanium.Filesystem.isExternalStoragePresent ( ) ma ritorno sempre vero SDCard anche esterno non è montato .

Penso che rileva SDCard a memoria locale quindi restituire true . Ma quello che davvero voglio è rilevare se SDCard fisica è montato o meno .

Posso fare questo rilevando l'esistenza di file " / storage / extSdCard " solo?

Thanks.

---

Top 5 Risposta

1Kishan @

Utilizzare questo se il lavoro per voi, perché questo è perfettamente funzionante per me :

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 @

E 'vero che il percorso del file di SDCard esterno su dispositivi Android sono sempre " / storage / extSdCard " ? Se no, quante variazioni ci sono ?

Purtroppo il percorso per l'archiviazione esterna non è sempre lo stesso secondo il fornitore . Utilizzando Environment.getExternalStorageDirectory() restituirà il percorso normale per SD card, che è mnt/sdcard/ . Ma per i dispositivi Samsung per esempio, il percorso della scheda SD è o sotto mnt/extSdCard/ o in mnt/external_sd/ .

Quindi un modo di procedere sarebbe quello di verificare l'esistenza di directory esterno secondo il percorso utilizzato da ciascun produttore . Con qualcosa di simile a questo :

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

Ma quello che davvero voglio è rilevare se SDCard fisica è montato o meno .

Non ho provato il codice ancora, ma l'approccio di Dmitriy Lozenko in questo http://stackoverflow.com/questions/11281010/how-can-i-get-external-sd-card-path-for-android-4 -0 è molto più interessante . Il suo metodo restituisce il percorso di tutte le schede SD montati su sytem indipendentemente dal produttore .