如何在android中访问USB Path?

时间:2012-07-02 10:28:50

标签: android

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

例如屏幕截图在这里...... Example

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

请指导我。感谢..

1 个答案:

答案 0 :(得分: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)

注意输出中的最后一行 - 这是我连接的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来查询和迭代已安装的设备,以找到您所追求的设备。