web-dev-qa-db-fra.com

Obtenir le répertoire sdcard par adb

Je suis en train de créer une application qui extrait des fichiers (Saved by Android app) de la carte sdcard de l'appareil par adb. Le problème est que différents périphériques ont différents répertoires sdcard 

c'est à dire:

  • carte SD
  • sdcard/external_sd

Tout d'abord j'ai inventé la solution suivante:

  1. exécuter adb Shell
  2. ls
  3. Vérifier si le répertoire "sdcard" existe
  4. Si oui, lancez sdcard/ls et vérifiez si external_sd existe
  5. valeur de retour.

Mais le problème est que j'ai deux appareils samsung GT-I9100 et GT-I9000 et que tous les deux ont un répertoire sdcard/external_sd. Quand je vérifie System.getenv("EXTERNAL_STORAGE"), on retourne sdcard et un autre sdcard/external_sd. Je dois extraire le fichier précédemment sauvegardé dans System.getenv("EXTERNAL_STORAGE").

La question est donc: y at-il une commande pour obtenir le répertoire sdcard directement depuis adb, sans accès au code Android?

Ou peut-être que je peux commencer l'activité avec adb's start et obtenir un retour valeur? Est-ce possible?

EDIT: Trouvé la solution:

adb Shell echo $EXTERNAL_STORAGE
22
Paweł

Si je ne vous ai pas mal compris, vous cherchez quelque chose comme:

emanuele@Nabucodonosor:~$ adb Shell cd \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb Shell ls \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb Shell echo \$EXTERNAL_STORAGE
26
Blackbelt

Pour ce que cela vaut - utiliser la variable $ EXTERNAL_STORAGE peut vous donner des résultats trompeurs . Cependant, lorsque vous utilisez la commande df (disk free) sur Shell, ou même la commande mount pour afficher de l’espace libre ou des montages, les éléments suivants deviennent évidents:

Shell@Android:/ $ 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

ainsi, la carte SD externe est en fait/mnt/external_sd, au lieu de la valeur renvoyée par EXTERNAL_STORAGE (qui est la mémoire interne)

18
John Deaux

Il est préférable d’utiliser getExternalStorageDirectory () au lieu de System.getenv("EXTERNAL_STORAGE"). Cela vous donnera un répertoire de stockage externe quel que soit le périphérique.

0
AndroDev