getExternalStorageDirectory()和getDataDirectory()

时间:2018-01-21 16:17:17

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

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

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

Environment.getExternalStorageDirectory().getPath()

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

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

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

任何人都可以帮助我理解上述两者之间的区别,并帮助我获得Android设备的内部存储路径吗?另外,请帮助我解决所有设备上的问题。

编辑:任何感觉这篇文章都不合适的人请发表评论并让我知道原因,以便我能够记住这一点。

1 个答案:

答案 0 :(得分:3)

  

我指的是通常保存文件的存储,例如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的根。我说“或多或少”因为应用程序从未真正使用此目录,而是使用特定于应用程序的子目录(例如getFilesDir()上的Context)。