Como posso determinar o diretório de armazenamento do ADB?

9

Existe uma maneira de usar o ADB para determinar o diretório de armazenamento externo (equivalente à chamada da API do Android Environment.getExternalStorageDirectory())?

entalhe
fonte

Respostas:

13

adb shell echo $EXTERNAL_STORAGE. Todo o crédito vai para o Flow por me levar a experimentar e encontrar isso.

Naturalmente, você pode usar cd $EXTERNAL_STORAGEou o que mais for necessário durante uma sessão do shell adb ou em um emulador de terminal.

Matthew Read
fonte
2
Bom trabalho em equipe :) +1
Fluxo
2
Muito bom! Obrigado! Note, no entanto, que se você precisar escapar $, dependendo do seu shell. exemplo: adb shell echo \ $ EXTERNAL_STORAGE
notlesh
Hmm, acontece que meu vibrante samsung me dá um valor diferente para $ EXTERNAL_STORAGE do que Environment.getExternalStorageDirectory (). Este não é o primeiro bug desagradável que encontrei neste telefone.
Notreh #
@stephelton Isso é decepcionante. Qual deles está incorreto? $ EXTERNAL_STORAGE está correto para mim /mnt/sdcard/external_sd/,.
Mateus Leia
6

Eu não acho que isso seja possível. Ver a publicação de Matthew

Mas vamos ter um bloqueio sobre como Environment.getExternalStorageDirectory()retorna o diretório de armazenamento externo. Uma rápida olhada android/os/Environment.javamostra que todo esse método faz, está retornando um membro constante de arquivo estático chamado EXTERNAL_STORAGE_DIRECTORY. Essa constante é inicializada por

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

que chama getDirectory()

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

Portanto, o diretório de armazenamento externo nada mais é do que uma variável de ambiente java System (ou um padrão predefinido). Você pode tentar seguir esse rastreamento ainda mais. Talvez o diretório de armazenamento externo seja apenas um caminho codificado em algum arquivo de configuração no sistema de arquivos. Ou talvez haja uma maneira de ler essas variáveis ​​de ambiente por meio adbdisso que eu não conheço.

Fluxo
fonte
2
Eu descobri o comando adb usando esta informação, +1.
Matthew Leia