通过adb获取sdcard目录
我正在制作一个应用程序,它通过 adb 从设备 SD 卡中提取文件(由 Android 应用程序保存)。 问题是不同的设备有不同的 sdcard 目录,
即:
- sdcard
- 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") 的文件。
所以问题是:有没有命令可以获取sdcard目录 直接从 adb,无需访问 Android 代码?
或者也许我可以使用 adb's am start 启动活动,并获得返回 价值?这可能吗?
编辑: 找到了解决方案:
adb shell echo $EXTERNAL_STORAGE
I am making an application, which pulls files(Saved by android app) from the device sdcard by adb.
The problem is that different devices, have various sdcard directories
i.e:
- sdcard
- sdcard/external_sd
Firstly I invented following solution:
- run adb shell
- ls
- Check if dir "sdcard" exists
- If yes run sdcard/ ls and check if external_sd exists
- return value.
But the problem is that I have two samsung devices GT-I9100
and GT-I9000
and both have a directory sdcard/external_sd
. When I am checking System.getenv("EXTERNAL_STORAGE")
one returns sdcard
and another sdcard/external_sd
. I need to pull file which was previously saved to 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?
EDIT:
Found the solution:
adb shell echo $EXTERNAL_STORAGE
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
无论其价值如何,使用 $EXTERNAL_STORAGE 变量可能会给您带来误导性的结果。
我这里有一台 HP Slate 平板电脑,其 EXTERNAL_STORAGE 变量设置为 /storage/sdcard0 。
但是,当在 shell 上使用 df(磁盘空闲)命令,甚至使用 mount 命令来显示可用空间或安装时,以下内容变得显而易见:
因此,外部 sd 卡实际上是 /mnt/external_sd,而不是 EXTERNAL_STORAGE 返回的值(这是内部存储)
For what its worth - using the $EXTERNAL_STORAGE variable can give you misleading results.
I have a HP Slate tablet here, which has the EXTERNAL_STORAGE variable set to /storage/sdcard0 .
However when using df (disk free) command on shell, or even the mount command to display free space or mounts, the following becomes obvious:
so, the external sd card is in fact /mnt/external_sd, instead of the value EXTERNAL_STORAGE returns(which is the internal storage)
如果我没有误解你的话,你正在寻找类似的东西:
If I've not misunderstood you, you're looking for something like:
最好使用 getExternalStorageDirectory() 而不是
System.getenv("EXTERNAL_STORAGE")
这将为您提供外部存储目录,无论设备如何。Its better to use getExternalStorageDirectory() instead of
System.getenv("EXTERNAL_STORAGE")
This will give you external storage directory irrespective of device.