通过adb获取sdcard目录

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

即:

  • SD卡
  • SD卡/ external_sd

首先我发明了以下解决scheme:

  1. 运行adb shell
  2. LS
  3. 检查dir“sdcard”是否存在
  4. 如果是运行sdcard / ls并检查external_sd是否存在
  5. 返回值。

但问题是,我有两个三星设备GT-I9100GT-I9000 ,都有一个目录sdcard/external_sd 。 当我检查System.getenv("EXTERNAL_STORAGE")返回sdcard和另一个sdcard/external_sd 。 我需要提取以前保存到System.getenv("EXTERNAL_STORAGE")

所以问题是:是否有任何命令直接从adb获得SD卡目录,而无需访问Android代码?

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

编辑:find解决scheme:

 adb shell echo $EXTERNAL_STORAGE 

Solutions Collecting From Web of "通过adb获取sdcard目录"

如果我没有误解你,你正在寻找像这样的东西:

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

对于它的价值 – 使用$ EXTERNAL_STORAGEvariables可以给你误导的结果。 我有一个HP Slate平板电脑,其中EXTERNAL_STORAGEvariables设置为/ 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返回值(这是内部存储)

它更好地使用getExternalStorageDirectory(),而不是System.getenv("EXTERNAL_STORAGE")这将给你外部存储目录,不pipe设备。