如果我理解正确,您所说的“外部”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的角度来看,可能存在三种存储类型:
- 内部存储器它始终安装在
/
设备下方,包含除 SD 卡和 USB 存储之外的所有内容。
- SD 卡- 这被称为“外部存储”,通常安装为
/mnt/sd
,但并非总是如此。 Environment.getExternalStorageDirectory()
将返回 SD 卡挂载点的路径。
- USB 存储- 仅少数设备(支持 USB 主机模式用于外部存储的设备)支持此功能。这将安装在 下的某个
/mnt
位置,但具体位置会有所不同。您将需要使用 Android NDK 来询问和迭代已安装的设备以找到您想要的设备。