我正在制作一个应用程序,它通过 adb 从设备 SD 卡中提取文件(由 Android 应用程序保存)。
问题是不同的设备,有不同的SD卡目录
i.e:
首先我发明了以下解决方案:
- 运行 adb shell
- ls
- 检查目录“sdcard”是否存在
- 如果是,运行 sdcard/ls 并检查 external_sd 是否存在
- 返回值。
但问题是我有两个三星设备GT-I9100
and GT-I9000
并且都有一个目录sdcard/external_sd
。当我检查时System.getenv("EXTERNAL_STORAGE")
一个返回sdcard
和另一个sdcard/external_sd
。我需要提取之前保存到的文件System.getenv("EXTERNAL_STORAGE")
.
所以问题是:有没有命令可以获取sdcard目录
直接从 adb,无需访问 Android 代码?
或者也许我可以使用 adb am start 启动活动并获得返回值?这可能吗?
编辑:
找到了解决方案:
adb shell echo $EXTERNAL_STORAGE
无论其价值如何,使用 $EXTERNAL_STORAGE 变量可能会给您带来误导性的结果。
我这里有一台 HP Slate 平板电脑,其 EXTERNAL_STORAGE 变量设置为 /storage/sdcard0 。
但是,当在 shell 上使用 df(磁盘空闲)命令,甚至使用 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返回的值(这是内部存储)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)