如何从ADB确定存储目录?


9

有没有一种方法可以使用ADB确定外部存储目录(等同于Android API调用Environment.getExternalStorageDirectory())?

Answers:


13

adb shell echo $EXTERNAL_STORAGE。所有的功劳归于Flow,让我尝试并找到了它。

自然,您可以cd $EXTERNAL_STORAGE在adb shell会话期间或从终端仿真器使用或可能需要的任何其他功能。


2
良好的团队合作:) +1
流程

2
很好!谢谢!但是请注意,如果您可能需要根据外壳对$进行转义。例如:adb shell echo \ $ EXTERNAL_STORAGE
notlesh 2011年

嗯,事实证明,充满活力的三星给我的$ EXTERNAL_STORAGE值不同于Environment.getExternalStorageDirectory()。这不是我在这部手机上发现的第一个讨厌的错误。
notlesh 2011年

@stephelton令人失望。哪一个不正确?$ EXTERNAL_STORAGE对我来说正确,/mnt/sdcard/external_sd/
马修(Matthew)

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 System环境变量(或预定义的默认值)。您可以尝试进一步跟踪此跟踪。也许外部存储目录只是文件系统上某些配置文件中的硬编码路径。或者,也许有一种adb我不知道的方法来读取这些环境变量。


2
我使用此信息+1找出了adb命令。
马修(Matthew)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.