6

我通过 USB 电缆连接了 android 设备和 PC。我的内部 SD 卡位置路径为/mnt/sdcard. 但我的外部 USB 设备路径为/mnt/userdata1. 我尝试使用此代码仅查找 Internal SD Card Path Environment.getExternalStorageDirectory()。我使用此代码仅在内部 SD 卡路径中访问。如何访问外部 USB 路径。

例如,屏幕截图在这里... 示例

在此示例中包含Internal Memory,External SD cardUSB Storage。如何以编程方式查找此路径Internal MemoryExternal SD card和)。USB Storage在此代码Environment.getExternalStorageDirectory()中,仅查看所有Internal Memory文件中的文件。那么如何访问其他路径(External SD cardUSB Storage

请用代码指导我。谢谢..

4

1 回答 1

2

如果我理解正确,您所说的“外部”USB 路径实际上是您计算机上 SD 卡的挂载点。很可能,您的 SD 卡有标签userdata1。因此,当它安装在计算机上时,它会获得/mnt/userdata1安装点。然而,这并不是绝对必要的,它可以是任何挂载点。事实上,如果你将它连接到另一台计算机,它很容易成为另一个挂载点。

由于此路径由计算机操作系统决定,因此您需要在计算机上找到此路径(请注意,每次将手机连接到 PC 时,此路径可能会有所不同,因此您每次都需要这样做) .

根据您的问题和路径结构(/mnt/userdata1),我猜您使用的是 linux 或其他一些 unix 版本。因此,您可以mount在 PC 上运行以查看已安装设备的列表。例如,这是我的 mac 上的输出:

$ mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
/dev/disk1s1 on /Volumes/ALEKS540 (msdos, local, nodev, nosuid, noowners)

注意输出中的最后一行——这是我连接的安卓手机,SD 卡安装在电脑上。在 Mac 上,挂载点创建在下面/Volumes而不是/mnt. 除此之外,ALEKS540是我的 SD 卡的标签,因此它是这样安装的。

在手机内部,它仍然安装为/mnt/sdcard.

从Android的角度来看,可能存在三种存储类型:

  1. 内部存储器它始终安装在/设备下方,包含除 SD 卡和 USB 存储之外的所有内容。
  2. SD 卡- 这被称为“外部存储”,通常安装为/mnt/sd,但并非总是如此。 Environment.getExternalStorageDirectory()将返回 SD 卡挂载点的路径。
  3. USB 存储- 仅少数设备(支持 USB 主机模式用于外部存储的设备)支持此功能。这将安装在 下的某个/mnt位置,但具体位置会有所不同。您将需要使用 Android NDK 来询问和迭代已安装的设备以找到您想要的设备。
于 2012-07-02T10:49:06.893 回答