ADBからストレージディレクトリを特定するにはどうすればよいですか?


9

ADBを使用して外部ストレージディレクトリを決定する方法はありEnvironment.getExternalStorageDirectory()ますか(Android API呼び出しと同等)。

回答:


13

adb shell echo $EXTERNAL_STORAGE。すべてのクレジットは、私を実験してこれを見つけるように導いたフローに当てられます。

当然cd $EXTERNAL_STORAGE、adbシェルセッション中に、またはターミナルエミュレータから、必要に応じて何でも使用できます。


2
良いチームワーク:) +1
フロー

2
とても良い!ありがとう!ただし、シェルによっては$をエスケープする必要がある場合があります。例:adb shell echo \ $ EXTERNAL_STORAGE
notlesh

うーん、サムスンの活気に満ちた$ EXTERNAL_STORAGEの値は、Environment.getExternalStorageDirectory()の値とは異なることがわかりました。これは私がこの電話で見つけた最初の厄介なバグではありません。
notlesh

@stepheltonそれは残念です。どちらが間違っていますか?$ EXTERNAL_STORAGEは私にとって正しいです/mnt/sdcard/external_sd/
マシュー

6

これが可能だとは思いません。マシューの投稿を参照

しかしEnvironment.getExternalStorageDirectory()、外部ストレージディレクトリを返す方法をロックしてみましょう。をざっと見てみると、android/os/Environment.javaこのメソッドはすべて、という静的定数Fileメンバーを返していることがわかりますEXTERNAL_STORAGE_DIRECTORY。この定数は

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

呼び出す getDirectory()

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

したがって、外部ストレージディレクトリは、Javaシステム環境変数(または事前定義されたデフォルト)に他なりません。このトレースをさらにたどることができます。たぶん、外部ストレージディレクトリは、ファイルシステム上のいくつかの構成ファイルにハードコードされたパスにすぎません。またはadb、私が知らない方法でこれらの環境変数を読み取る方法があるかもしれません。


2
この情報+1を使用してadbコマンドを見つけました。
Matthewが
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.