【问题标题】:getExternalFilesDirs() does not return SD card foldergetExternalFilesDirs() 不返回 SD 卡文件夹
【发布时间】:2015-09-03 23:47:10
【问题描述】:

有没有可靠的方法来找出 Android 设备上的外部 SD 卡文件夹? (KitKat 及更高版本)

我的理解是,从 KitKat 开始,您可以使用 getExternalFilesDirs(null) 来获取可用存储列表,包括辅助 SD 卡。

但是在插入了 SD 卡的联想 A3500 平板电脑上,getExternalFilesDirs() 只返回一个条目"/storage/emulated/0/Android/data/<app>/files"。通过文件管理器可以看到"/storage/sdcard0"(内部闪存)和"/storage/sdcard1"(外部SD 卡),但第二个SD 在getExternalFilesDir() 返回的条目列表中不可用。

是否某些制造商决定不通过该标准化 API 导出 SD 文件夹?是否有其他方法可以更好地可靠地在设备上找到额外的存储空间?

设备是搭载 Android 4.4.2 的 Lenovo A3500

【问题讨论】:

  • “我的理解是,从 KitKat 开始,您可以使用 getExternalFilesDirs(null) 获取可用存储列表,包括辅助 SD 卡”——仅适用于搭载 Android 4.4+ 的设备。如果GSMArena 正确,则您的设备附带 Android 4.2.2。在 Android 4.4 之前,开发人员根本无法正式访问可移动媒体。提供从 pre-4.4 升级到 4.4+ 的制造商可以在集成 4.4 有限的可移动媒体支持方面做他们想做的事。
  • 看看 System.getenv("SECONDARY_STORAGE");和其他人。

标签: android


【解决方案1】:

如果您在 4.4+ 以上并且需要获取 sd-card 文件目录,我有解决方案。

val externalStorageVolumes: Array<out File> =
            ContextCompat.getExternalFilesDirs(this.context, null)
val secondaryExternalStorage = externalStorageVolumes[1] //Sd_card files directory

如果存在 SD 卡,则数组大小将为 2。第一个是模拟存储,下一个是 Sd 卡存储。

【讨论】:

  • 已编辑,如果您高于 4.4+。有人可能会发现这对获取 sd 卡路径很有用。
  • getExternalFilesDirs 在我的 Android 8.0 模拟器上也只返回 1 个条目(虽然它有 SD 卡)。所以这根本不是答案......
  • getExternalFilesDirs 将返回 2 个条目,如果您的 sd 卡已安装,否则 1 个条目。确保已安装。尝试使用真实设备。不要在没有收集适当信息的情况下盲目评论 [stackoverflow.com/a/33350615/8380444]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 2011-08-07
  • 2018-05-18
  • 2012-09-20
  • 2011-08-06
  • 2013-07-09
相关资源
最近更新 更多