web-dev-qa-db-de.com

Holen Sie sich das SD-Verzeichnis per Adb

Ich mache eine Anwendung, die Dateien (von Android-App gespeichert) von der SD-Karte des Geräts von Adb abruft. Das Problem ist, dass verschiedene Geräte über verschiedene SD-Verzeichnisse verfügen 

das heißt:

  • sD-Karte
  • sdcard/external_sd

Zuerst habe ich folgende Lösung erfunden:

  1. führen Sie Adb Shell aus
  2. ls
  3. Prüfen Sie, ob das Verzeichnis "sdcard" existiert
  4. Wenn ja, führen Sie sdcard/ls aus und prüfen Sie, ob external_sd vorhanden ist
  5. rückgabewert.

Aber das Problem ist, dass ich zwei Samsung-Geräte GT-I9100 und GT-I9000 und beide ein Verzeichnis sdcard/external_sd habe. Wenn ich System.getenv("EXTERNAL_STORAGE") überprüfe, gibt man sdcard und einen anderen sdcard/external_sd zurück. Ich muss eine Datei ziehen, die zuvor in System.getenv("EXTERNAL_STORAGE") gespeichert wurde.

Die Frage ist also: Gibt es einen Befehl zum Abrufen des SD-Verzeichnisses direkt von adb, ohne Zugriff auf Android-Code?

Oder vielleicht kann ich mit adb's Start beginnen und zurückkehren Wert? Ist das möglich?

BEARBEITEN: Die Lösung gefunden:

adb Shell echo $EXTERNAL_STORAGE
22
Paweł

Wenn ich dich nicht missverstanden habe, suchst du nach etwas wie:

[email protected]:~$ adb Shell cd \$EXTERNAL_STORAGE
[email protected]:~$ adb Shell ls \$EXTERNAL_STORAGE
[email protected]:~$ adb Shell echo \$EXTERNAL_STORAGE
26
Blackbelt

Wofür es sich lohnt, kann die Verwendung der $ EXTERNAL_STORAGE-Variable zu irreführenden Ergebnissen führen. Ich habe hier ein HP Slate-Tablet, für das die EXTERNAL_STORAGE-Variable auf/storage/sdcard0 gesetzt ist. Wenn Sie jedoch den Befehl df (disk free) in der Shell oder sogar den Befehl mount verwenden, um freien Speicherplatz oder Mounts anzuzeigen, wird Folgendes offensichtlich:

[email protected]:/ $ df
Filesystem             Size   Used   Free   Blksize
/dev                  452.7M  36.0K  452.7M   4096
/mnt/asec             452.7M  0.0 K  452.7M   4096
/mnt/obb              452.7M  0.0 K  452.7M   4096
/system               629.9M  468.5M  161.5M   4096
/data                 5.7 G  2.3 G  3.5 G   4096
/cache                435.9M  16.4M  419.5M   4096
/storage/sdcard0      5.7 G  2.3 G  3.5 G   4096
/mnt/external_sd      29.3G  64.0K  29.3G   32768

also ist die externe SD-Karte tatsächlich/mnt/external_sd, anstelle des Werts, den EXTERNAL_STORAGE zurückgibt (was der interne Speicher ist)

18
John Deaux

Es ist besser, getExternalStorageDirectory () anstelle von System.getenv("EXTERNAL_STORAGE") zu verwenden. Dadurch erhalten Sie ein externes Speicherverzeichnis, unabhängig vom Gerät.

0
AndroDev