如何在android中访问USB Path?

Din*_*gam 6 android

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

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

在此示例中包含Internal Memory,External SD cardUSB Storage.如何找到这条路径(Internal Memory,External SD cardUSB Storage)编程.在此代码中,Environment.getExternalStorageDirectory()仅查看所有Internal Memory文件中的文件.那么如何访问其他路径(External SD cardUSB Storage)

请指导我的代码.谢谢..

Ale*_*s G 2

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

由于该路径是由计算机操作系统决定的,因此您需要在计算机上找到该路径(请注意,每次将手机连接到 PC 时,该路径都可能不同,因此每次都需要执行此操作) 。

从你的问题和路径结构(/mnt/userdata1)我猜你正在使用linux或其他一些unix版本。因此,您可以在 PC 上运行mount来查看已安装设备的列表。例如,这是我的 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)
Run Code Online (Sandbox Code Playgroud)

请注意输出中的最后一行 - 这是我连接的 Android 手机,并将 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 来询问和迭代已安装的设备以找到您想要的设备。