# Auflisten aller verfügbaren Speicher



## Lucaaa (29. Dez 2018)

Hallo!
Meine App soll einen integrierten Dateiexplorer beinhalten.
Dazu möchte ich zu Anfang alle verfügbaren Speichermedien Anzeigen. Also z.B. Interner Speicher, SD Karte, Angeschlossener USB Stick etc.
mit dem hier:
`Environment.getExternalStorageDirectory()` bekomme ich nur den Internen Speicher. ich habe schon versucht zu `/storage/` zu navigieren. Da bekomme ich:
* AE43223 (Die SD Karte)
* emulated
* self
Auf die SD Karte kann ich mit der Möglichkeit zugreifen, aber auf emulated nicht (Der interne Speicher ist `/storage/emulated/0` jedoch habe ich auf `/storage/emulated/` keinen Zugriff.

Hat wer da ne Idee?
Ich möchte das es so aussieht:
* SD Karte
* Interner Speicher
* Was auch immer noch angeschlossen ist


----------



## Robat (29. Dez 2018)

Ist hier nichts hilfreiches dabei?


----------



## Lucaaa (29. Dez 2018)

Robat hat gesagt.:


> Ist hier nichts hilfreiches dabei?


Das hilft alles nicht!
In jedem Dateiexplorer der sich im Playstore finden lässt, gibt es doch zu Anfang die Auswahl, ob ich den Internen Speicher, die SD-Karte oder falls verfügbar einen USB Stick durchsuchen möchte.
Es muss also eine Möglichkeit geben, alle angeschlossenen Speicher anzuzeigen. 
Mit den von dir verlinkten Methoden bekomme ich entweder wieder das root Verzeichnis, wo ich keine Zugriffsrechte habe, oder den Internen Speicher.


----------



## Lucaaa (29. Dez 2018)

Ich habe mir jetzt etwas zusammen gebastelt, das zumindest auf meinem Telefon funktioniert. Ob es sicher ist (heißt, wirklich immer funktioniert) weiß ich nicht.

```
public File[] getExtStorages() {
    File root = new File("/storage/");
    File[] rootContent = root.listFiles();

    ArrayList<File> drives =new ArrayList<>();
    for(File f : rootContent) {
        if(f.isDirectory() && f.exists() && f.canRead()) {
            drives.add(f);
        }
    }
    if(!drives.contains(Environment.getExternalStorageDirectory())) {
        drives.add(Environment.getExternalStorageDirectory());
    }

    File[] storages =new File[drives.size()];
    for(int i=0; i<drives.size(); i++) {
        storages[i] = drives.get(i);
    }


    return storages;
}
```


----------

