/sdcard 和 /mnt/sdcard 并不总是相同的。可以存在许多路径,例如:
/emmc
/mnt/sdcard/external_sd
/mnt/external_sd
/sdcard/sd
/mnt/sdcard/bpemmctest
/mnt/sdcard/_ExternalSD
/mnt/sdcard-ext
/mnt/Removable/MicroSD
/Removable/MicroSD
/mnt/external1
/mnt/extSdCard
/mnt/extsd
/mnt/usb_storage <-- usb flash mount
/mnt/extSdCard <-- usb flash mount
/mnt/UsbDriveA <-- usb flash mount
/mnt/UsbDriveB <-- usb flash mount
当它们使功能可用时,您应该没有理由需要硬编码到内部或外部存储器的直接路径。您进行硬编码的任何内容都与您从仅列出的功能中返回的内容相同,这些功能将适用于该特定设备。
这将为您提供外部存储上文件的绝对路径字符串:
String myPath = sdcardEnvironment.getExternalStorageDirectory().getAbsolutePath() + "/folder file is in/file you want path to";
这将为您提供应用程序内部存储的路径:
this.getApplicationContext().getFilesDir()
由于较新版本的 android 分区本身的方式,您不能总是从代码访问外部 SD 卡。这是直接来自android开发网站的声明:
It's possible that a device using a partition of the internal storage for the external storage may also offer an SD card slot. In this case, the SD card is not part of the external storage and your app cannot access it