jcl*_*ova 32 android path sd-card android-sdcard
我一直在谷歌搜索,但很难找到制造商/型号使用哪个路径的SD卡/外部存储.
Environment.getExternalStorageDirectory()
我知道getExternalStorageDirectory()有时在某些设备上指向外部SD卡.
这是我发现的外部路径的一些常见路径(不确定哪个制造商使用哪个路径):
/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
Run Code Online (Sandbox Code Playgroud)
这些是我通过谷歌搜索找到的.
我需要扫描整个内部+外部存储器+ USB闪存驱动器以查找某个文件.如果我遗漏了任何路径,请添加到上面的列表中.如果有人知道每个制造商使用的路径,请与我们分享.
Jef*_*key 13
好消息!在KitKat中,现在有一个用于与这些辅助共享存储设备交互的公共API.
新的Context.getExternalFilesDirs()和Context.getExternalCacheDirs()方法可以返回多个路径,包括主设备和辅助设备.然后,您可以迭代它们并检查Environment.getStorageState()并File.getFreeSpace()确定存储文件的最佳位置.这些方法也可以ContextCompat在support-v4库中找到.
另请注意,如果您只对使用返回的目录感兴趣,则Context不再需要READ_或WRITE_EXTERNAL_STORAGE权限.展望未来,您将始终拥有对这些目录的读/写访问权限,而无需其他权限.
应用还可以通过终止其权限请求继续处理旧设备,如下所示:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
Run Code Online (Sandbox Code Playgroud)
小智 11
我也从一个像你这样的列表开始(抱歉找不到原始源)并继续添加从用户反馈中收集的一些路径.上面的列表有重复.
/storage/sdcard1 //!< Motorola Xoom
/storage/extsdcard //!< Samsung SGS3
/storage/sdcard0/external_sdcard // user request
/mnt/extsdcard
/mnt/sdcard/external_sd //!< Samsung galaxy family
/mnt/external_sd
/mnt/media_rw/sdcard1 //!< 4.4.2 on CyanogenMod S3
/removable/microsd //!< Asus transformer prime
/mnt/emmc
/storage/external_SD //!< LG
/storage/ext_sd //!< HTC One Max
/storage/removable/sdcard1 //!< Sony Xperia Z1
/data/sdext
/data/sdext2
/data/sdext3
/data/sdext4
/sdcard1 //Sony Xperia Z
/sdcard2 //HTC One M8s
/storage/microsd //ASUS ZenFone 2
Run Code Online (Sandbox Code Playgroud)
对于你想要实现的目标(扫描某些文件的所有可能路径),我认为这样做是非常不可能的(使用已知路径列表).在同一设备上的一些路径甚至在android升级之间改变.