Comment puis-je déterminer le répertoire de stockage à partir d'ADB?

9

Existe-t-il un moyen d'utiliser ADB pour déterminer le répertoire de stockage externe (équivalent de l'appel d'API Android Environment.getExternalStorageDirectory())?

notlesh
la source

Réponses:

13

adb shell echo $EXTERNAL_STORAGE. Tout le mérite revient à Flow pour m'avoir conduit à expérimenter et à trouver cela.

Naturellement, vous pouvez utiliser cd $EXTERNAL_STORAGEou tout ce dont vous pourriez avoir besoin pendant une session shell adb ou à partir d'un émulateur de terminal.

Matthew Read
la source
2
Bon travail d'équipe :) +1
Débit
2
Très bien! Merci! Notez cependant que si vous devez échapper $ en fonction de votre shell. exemple: adb shell echo \ $ EXTERNAL_STORAGE
notlesh
Hmm, il s'avère que mon Samsung vibrant me donne une valeur différente pour $ EXTERNAL_STORAGE que pour Environment.getExternalStorageDirectory (). Ce n'est pas le premier bug méchant que j'ai trouvé sur ce téléphone.
2011
@stephelton C'est décevant. Lequel est incorrect? $ EXTERNAL_STORAGE est correct pour moi, /mnt/sdcard/external_sd/.
Matthieu lu
6

Je ne pense pas que cela soit possible. Voir le message de Matthew

Mais verrouillons la façon dont Environment.getExternalStorageDirectory()retourne le répertoire de stockage externe. Un rapide coup d'œil android/os/Environment.javamontre que toute cette méthode renvoie un membre de fichier constant statique appelé EXTERNAL_STORAGE_DIRECTORY. Cette constante est initialisée par

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

qui appelle getDirectory()

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

Le répertoire de stockage externe n'est donc rien d'autre qu'une variable d'environnement du système Java (ou une valeur par défaut prédéfinie). Vous pouvez essayer de suivre cette trace plus loin. Peut-être que le répertoire de stockage externe n'est qu'un chemin codé en dur dans un fichier de configuration du système de fichiers. Ou peut-être qu'il existe un moyen de lire ces variables d'environnement via adbque je ne connais pas.

Couler
la source
2
J'ai compris la commande adb en utilisant ces informations, +1.
Matthew Read