通过adb获取sdcard目录

发布于 2025-01-08 07:23:52 字数 802 浏览 1 评论 0原文

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

即:

  • sdcard
  • sdcard/external_sd

首先,我发明了以下解决方案:

  1. 运行 adb shell
  2. ls
  3. 检查目录“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") 的文件。

所以问题是:有没有命令可以获取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:

  1. run adb shell
  2. ls
  3. Check if dir "sdcard" exists
  4. If yes run sdcard/ ls and check if external_sd exists
  5. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苄①跕圉湢 2025-01-15 07:23:52

无论其价值如何,使用 $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 返回的值(这是内部存储)

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:

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

so, the external sd card is in fact /mnt/external_sd, instead of the value EXTERNAL_STORAGE returns(which is the internal storage)

阪姬 2025-01-15 07:23:52

如果我没有误解你的话,你正在寻找类似的东西:

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

If I've not misunderstood you, you're looking for something like:

emanuele@Nabucodonosor:~$ adb shell cd \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb shell ls \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb shell echo \$EXTERNAL_STORAGE
苹果你个爱泡泡 2025-01-15 07:23:52

最好使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文