我通过USB线连接Android设备和PC。我的内部SD卡位置路径为/mnt/sdcard
。但我的外部USB设备路径为/mnt/userdata1
。我尝试使用此代码仅查找内部SD卡路径Environment.getExternalStorageDirectory()
。我使用此代码仅在内部SD卡路径中访问。如何访问外部USB路径。
例如屏幕截图在这里......
Example
在此示例中包含Internal Memory
,External SD card
和USB Storage
。如何以编程方式查找此路径(Internal Memory
,External SD card
和USB Storage
)。在此代码中,Environment.getExternalStorageDirectory()
仅查看来自所有Internal Memory
文件的文件。那么如何访问其他路径(External SD card
和USB Storage
)
请指导我。感谢..
答案 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的角度来看,可能有三种存储类型:
/
下,并包含除SD卡和USB存储设备之外的所有内容。/mnt/sd
,但并非总是如此。 Environment.getExternalStorageDirectory()
将返回SD卡挂载点的路径。/mnt
下的某个位置,但具体位置会有所不同。您将需要使用Android NDK来查询和迭代已安装的设备,以找到您所追求的设备。