我正在制作一个应用程序,它通过 adb 从设备 sdcard 中提取文件(由 android 应用程序保存)。 问题是不同的设备,有不同的sdcard目录
即:
- SD卡
- sdcard/external_sd
首先我发明了以下解决方案:
- 运行 adb shell
- ls
- 检查目录“sdcard”是否存在
- 如果是,运行 sdcard/ls 并检查 external_sd 是否存在
- 返回值。
但问题是我有两个三星设备 GT-I9100
和 GT-I9000
并且都有一个目录 sdcard/external_sd
。当我检查 System.getenv("EXTERNAL_STORAGE")
时,一个返回 sdcard
和另一个 sdcard/external_sd
。我需要提取以前保存到 System.getenv("EXTERNAL_STORAGE")
.
So the question is: is there any command to get sdcard directory directly from adb, without access to Android code?
Or maybe I can start activity with adb's am start, and get return value? Is this possible?
编辑: 找到解决方案:
adb shell echo $EXTERNAL_STORAGE
最佳答案
对于它的值(value) - 使用 $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返回的值(即内部存储)
关于android - 通过 adb 获取 sdcard 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9374628/