Wie kann ich das Speicherverzeichnis von ADB ermitteln?

9

Gibt es eine Möglichkeit, mit ADB das externe Speicherverzeichnis zu ermitteln (entspricht dem Android-API-Aufruf Environment.getExternalStorageDirectory())?

notlesh
quelle

Antworten:

13

adb shell echo $EXTERNAL_STORAGE. Alle Ehre gebührt Flow, der mich dazu gebracht hat, zu experimentieren und dies zu finden.

Natürlich können Sie cd $EXTERNAL_STORAGEoder was auch immer Sie sonst noch während einer ADB-Shell-Sitzung oder von einem Terminal-Emulator aus verwenden.

Matthew Read
quelle
2
Gute Teamarbeit :) +1
Flow
2
Sehr gut! Vielen Dank! Beachten Sie jedoch, dass Sie abhängig von Ihrer Shell möglicherweise $ entkommen müssen. Beispiel: ADB Shell Echo \ $ EXTERNAL_STORAGE
Notlesh
Hmm, es stellt sich heraus, dass mein Samsung Vive mir einen anderen Wert für $ EXTERNAL_STORAGE gibt als Environment.getExternalStorageDirectory (). Dies ist nicht der erste böse Fehler, den ich auf diesem Telefon gefunden habe.
Notlesh
@ Stephelton Das ist enttäuschend. Welches ist falsch? $ EXTERNAL_STORAGE ist für mich richtig /mnt/sdcard/external_sd/.
Matthew Read
6

Ich denke nicht, dass dies möglich ist. Siehe Matthews Post

Lassen Sie uns jedoch festlegen, wie Environment.getExternalStorageDirectory()das externe Speicherverzeichnis zurückgegeben wird. Ein kurzer Blick in android/os/Environment.javazeigt, dass diese Methode nur ein statisches konstantes Dateimitglied namens zurückgibt EXTERNAL_STORAGE_DIRECTORY. Diese Konstante wird durch initialisiert

private static final File EXTERNAL_STORAGE_DIRECTORY
        = getDirectory("EXTERNAL_STORAGE", "/sdcard");

was anruft getDirectory()

static File getDirectory(String variableName, String defaultPath) {
    String path = System.getenv(variableName);
    return path == null ? new File(defaultPath) : new File(path);
}

Das externe Speicherverzeichnis ist also nichts anderes als eine Java-System-Umgebungsvariable (oder eine vordefinierte Standardeinstellung). Sie könnten versuchen, dieser Spur weiter zu folgen. Möglicherweise ist das externe Speicherverzeichnis nur ein fest codierter Pfad in einer Konfigurationsdatei im Dateisystem. Oder vielleicht gibt es eine Möglichkeit, diese Umgebungsvariablen auszulesen, adbdie ich nicht kenne.

Fließen
quelle
2
Ich habe den Befehl adb anhand dieser Informationen herausgefunden, +1.
Matthew Read