通过 adb 获取 sdcard 目录
Posted
技术标签:
【中文标题】通过 adb 获取 sdcard 目录【英文标题】:Get sdcard directory by adb 【发布时间】:2012-03-11 14:10:11 【问题描述】:我正在制作一个应用程序,它通过 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")
的文件。
所以问题是:有没有命令可以获取 sdcard 目录 直接来自 adb,不访问 Android 代码?
或者我可以用 adb's am start 开始活动,然后得到回报 价值?这可能吗?
编辑: 找到解决方案:
adb shell echo $EXTERNAL_STORAGE
【问题讨论】:
你可能想转义 $ 当我使用adb shell echo $EXTERNAL_STORAGE
时,它会自动转义 $。当我这样做时: 1. adb shell
2. echo $EXTERNAL_STORAGE
我必须以 exit
结束它以逃避 $
android.stackexchange.com/q/14105/32571 的副本
【参考方案1】:
对于它的价值 - 使用 $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】:如果我没有误解你,你正在寻找类似的东西:
emanuele@Nabucodonosor:~$ adb shell cd \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb shell ls \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb shell echo \$EXTERNAL_STORAGE
【讨论】:
根据您的评论找到解决方案“adb shell echo $EXTERNAL_STORAGE”,谢谢。 这不是正确的答案。 John Deaux 的回答很好。 由于某些愚蠢的原因,在我的设备上 $EXTERNAL_STORAGE 实际上是内部存储器。 John Deaux 是对的,df
是正确的选择!
答案很老【参考方案3】:
最好使用getExternalStorageDirectory() 而不是System.getenv("EXTERNAL_STORAGE")
这将为您提供外部存储目录,而与设备无关。
【讨论】:
与设备无关?你的意思是 System.getenv("EXTERNAL_STORAGE") 不能在某些设备上运行? getExternalStorageDirectory() 表示外部应用程序存储,而不是外部设备存储。谷歌似乎有一个设计时代,可扩展设备内存从 Android 中移除。他们把它放回去了,但结果是一团糟。棒棒糖后,安装外部存储(SD卡,USB,网络驱动器等)应该是直截了当的。 我想从 shell 脚本访问 sdcard,这个答案对我帮助很大。我不明白为什么人们投票反对......以上是关于通过 adb 获取 sdcard 目录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用批处理在 /sdcard 上 adb chmod 750