【问题标题】:Difference between getExternalStorageDirectory() and getDataDirectory()getExternalStorageDirectory() 和 getDataDirectory() 之间的区别
【发布时间】:2018-01-21 16:17:17
【问题描述】:

我正在尝试获取 Android 设备的内部和外部存储路径。

这就是我在大多数设备中获取内部存储路径的方式

Environment.getExternalStorageDirectory().getPath()

上述方法适用于大多数设备,但此方法在某些设备上会出现问题,即它正在返回 SD 卡路径。

谁能告诉我如何在Environment.getExternalStorageDirectory().getPath() 返回外部存储路径(SD 卡路径)的设备中准确获取内部存储路径。

我也知道Environment.getDataDirectory().getPath(),但此方法返回值类似于/data,而同一设备的Environment.getExternalStorageDirectory().getPath() 返回/storage/sdcard0,当SD 卡不存在但SD 卡存在时,它指向内部存储现在它给出了指向 SD 卡而不是内部存储的路径。

谁能帮我理解以上两者之间的区别,也可以帮我获取Android设备的内部存储路径吗?另外,请帮助我提供一个适用于所有设备的解决方案。

编辑:任何认为此帖子不合适的人请发表评论并告诉我原因,以便我将来记住这一点。

【问题讨论】:

  • 不清楚您所说的“内部存储路径”是什么意思。它似乎与 Android SDK 所指的 internal storageexternal storageremovable storage 不一致。
  • 嗨有趣的问题,可能的答案stackoverflow.com/a/19982338/2298357
  • @PankajKantPatel 感谢您的回答。此答案是否会返回内部存储路径以及外部存储路径(SD 卡)。而且这对所有设备都一样吗?
  • @CommonsWare 谢谢。但我指的是通常保存文件的存储,例如 WhatsApp 文件夹、DCIM、下载等。
  • @Rahulrr2602 我不得不说这是一个重要的问题。即使在从 Android 知道这一点之后,我在 Flutter 中开发时也多次遇到同样的问题。我认为命名法会产生冲突。因为随着技术的发展,内部/外部/可移动/分区的相同概念从未遵循原始函数名称!

标签: java android storage android-sdcard android-external-storage


【解决方案1】:

我指的是通常保存文件的存储,例如 WhatsApp 文件夹、DCIM、下载等。

这就是 Android SDK 所指的external storage

上述方法适用于大多数设备,但此方法在某些设备上会出现问题,即它正在返回 SD 卡路径。

它应该在 100% 的 Android 设备上返回外部存储的位置。外部存储是否可移动取决于设备制造商。 大量大多数 Android 设备都有永久不可移动的外部存储,通常与设备板载闪存中的internal storage 位于同一分区。

谁能告诉我如何在 Environment.getExternalStorageDirectory().getPath() 返回外部存储路径(SD 卡路径)的设备中准确获取内部存储路径。

很可能没有这样的路径。

同一设备的 Environment.getExternalStorageDirectory().getPath() 返回 /storage/sdcard0 ,当 SD 卡不存在时,它指向内部存储,但当 SD 卡存在时,它给出指向 SD 卡的路径和不是内部存储。

getExternalStorageDirectory() 的值不应因某些可移动媒体的存在或不存在而变化。如果您的描述是准确的,那么这是一个有问题的设备,您对此无能为力。当然,没有获取“其他”getExternalStorageDirectory() 值的标准方法,因为该值不应该改变。

(顺便说一句,你有什么设备可以这样操作?)

谁能帮我理解以上两者的区别

getDataDirectory() 或多或少返回internal storage 的根。我说“或多或少”是因为应用程序从未真正使用此目录,而是使用特定于应用程序的子目录(例如,Context 上的getFilesDir())。

【讨论】:

  • 很好的答案。非常感谢你。出现此问题的设备是 Micromax Canvas Tablet P290。能否请您指导我如何找到 SD 卡路径?。
  • @Rahulrr2602: 嗯……我会密切注意这一点,看看能不能得到一个进行测试。 “能否请您指导我如何找到 SD 卡路径?” -- 通常,您不会通过文件系统访问removable storage。无法保证获得可移动存储的文件系统路径,并且该路径将毫无用处(因为您没有对其中大部分内容的读取或写入权限)。
  • 非常感谢。再想一想,这可能是因为平板电脑将 SD 卡视为内部存储(放置 DCIM、下载文件夹的存储)?因此,实际的内部存储被视为外部存储。
猜你喜欢
  • 2017-10-25
  • 2012-04-24
  • 1970-01-01
  • 2021-12-25
  • 2020-05-10
  • 2014-09-20
  • 2010-10-28
  • 2015-10-04
  • 2012-08-12
相关资源
最近更新 更多