通过adb获取sdcard目录

时间:2012-02-21 08:56:52

标签: android adb sd-card

我正在创建一个应用程序,它通过adb从设备SD卡中提取文件(由Android应用程序保存)。 问题是不同的设备,有各种SD卡目录

即:

  • SD卡
  • SD卡/ external_sd

首先,我发明了以下解决方案:

  1. 运行adb shell
  2. LS
  3. 检查dir“sdcard”是否存在
  4. 如果是,请运行sdcard / ls并检查external_sd是否存在
  5. 返回值。
  6. 但问题是我有两个三星设备GT-I9100GT-I9000,并且都有一个目录sdcard/external_sd。当我检查System.getenv("EXTERNAL_STORAGE")时,我会返回sdcard和另一个sdcard/external_sd。我需要将以前保存的文件拉到System.getenv("EXTERNAL_STORAGE")

      

    所以问题是:是否有任何命令来获取SD卡目录   直接来自adb,无法访问Android代码?

         

    或者也许我可以开始使用adb的活动,并获得回报   值?这可能吗?

    编辑: 找到解决方案:

    adb shell echo $EXTERNAL_STORAGE
    

3 个答案:

答案 0 :(得分:27)

如果我没有误解你,你会找到类似的东西:

emanuele@Nabucodonosor:~$ adb shell cd \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb shell ls \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb shell echo \$EXTERNAL_STORAGE

答案 1 :(得分:19)

它的价值 - 使用$ EXTERNAL_STORAGE变量可以给你带来误导性的结果。 我这里有一个HP Slate平板电脑,它的EXTERNAL_STORAGE变量设置为/ storage / sdcard0。 但是,在shell上使用df(disk free)命令,甚至使用mount命令显示可用空间或挂载时,以下内容显而易见:

shell@android:/ $ df
Filesystem             Size   Used   Free   Blksize
/dev                  452.7M  36.0K  452.7M   4096
/mnt/asec             452.7M  0.0 K  452.7M   4096
/mnt/obb              452.7M  0.0 K  452.7M   4096
/system               629.9M  468.5M  161.5M   4096
/data                 5.7 G  2.3 G  3.5 G   4096
/cache                435.9M  16.4M  419.5M   4096
/storage/sdcard0      5.7 G  2.3 G  3.5 G   4096
/mnt/external_sd      29.3G  64.0K  29.3G   32768

所以,外部SD卡实际上是/ mnt / external_sd,而不是值EXTERNAL_STORAGE返回(这是内部存储)

答案 2 :(得分:0)

最好使用getExternalStorageDirectory()代替System.getenv("EXTERNAL_STORAGE")这将为您提供外部存储目录,无论设备如何。