制造商可移动存储(外部)SD卡路径

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升级之间改变.