Jak mogę ustalić katalog pamięci z ADB?

9

Czy istnieje sposób, w jaki mogę użyć ADB do określenia zewnętrznego katalogu pamięci (odpowiednik wywołania interfejsu API Androida Environment.getExternalStorageDirectory())?

notlesh
źródło

Odpowiedzi:

13

adb shell echo $EXTERNAL_STORAGE. Wszystkie podziękowania należą się Flowowi za zachęcenie mnie do eksperymentowania i znalezienia tego.

Oczywiście możesz użyć cd $EXTERNAL_STORAGEdowolnego innego narzędzia podczas sesji powłoki adb lub z emulatora terminala.

Matthew Read
źródło
2
Dobra praca zespołowa :) +1
Flow
2
Bardzo dobre! Dzięki! Pamiętaj jednak, że jeśli będziesz musiał uciec $ w zależności od powłoki. przykład: echo powłoki adb \ $ EXTERNAL_STORAGE
notlesh
Hmm, okazuje się, że mój Samsung wibrujący daje mi inną wartość $ EXTERNAL_STORAGE niż Environment.getExternalStorageDirectory (). To nie pierwszy paskudny błąd, który znalazłem w tym telefonie.
notlesh
@stephelton To rozczarowujące. Który jest niepoprawny? $ EXTERNAL_STORAGE jest poprawna dla mnie /mnt/sdcard/external_sd/.
Mateusz
6

Nie sądzę, że to jest możliwe. Zobacz Matthew's Post

Ale zastanówmy się, w jaki sposób Environment.getExternalStorageDirectory()zwraca katalog pamięci zewnętrznej. Szybkie spojrzenie android/os/Environment.javapokazuje, że wszystkie te metody zwracają stałą statyczną o nazwie Członek pliku EXTERNAL_STORAGE_DIRECTORY. Ta stała jest inicjowana przez

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

który wzywa getDirectory()

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

Zewnętrzny katalog pamięci to nic innego jak zmienna środowiskowa java System (lub predefiniowana wartość domyślna). Możesz spróbować śledzić ten ślad dalej. Być może zewnętrzny katalog pamięci jest po prostu zakodowaną ścieżką w pliku konfiguracyjnym systemu plików. A może istnieje sposób na odczyt tych zmiennych środowiskowych za pomocą adbtego, czego nie znam.

Pływ
źródło
2
Zrozumiałem polecenie adb, używając tych informacji +1.
Mateusz