2013-08-02 38 views
0

我正在用各种仿真设备上的Android Studio进行开发。困惑:context.getExternalFilesDir与Environment.getExternalStorageState();

Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) 

总是返回false直到我选择仿真模拟设备上的SD卡。

但在http://developer.android.com/training/basics/data-storage/files.html的文件明确规定,

“总有两个存储空间和API行为是相同的外部存储是否可移动或不是。”

这似乎表明外部存储不需要引用实际的SD卡,可能是内部的。因此,为什么我需要调整大于零的模拟SD卡才能使该代码正常工作?我误解或错过了什么?

另外,context.getExternalFilesDir引用与Environment.getExternalStorageState相同的目录标志吗?

谢谢

托尼

回答

0

你需要选择模拟SD卡,以表明你有关联的外部存储模拟器。并且您所说的是正确的,外部存储可以是可移动存储介质(如SD卡)或内部(不可移动)存储。

是,context.getExternalFilesDir返回到外部文件系统按该文件的目录的绝对路径,因此,指的是同一个目录的标志作为Environment.getExternalStorageState

+0

这听起来像我不能在外部存储数*总是*可用。例如,如果有人安装,然后删除了一张SD卡,操作系统不会有一些内置的存储可用作外部存储。 是否有*总是*一些“外部”存储可用,即使在没有SD卡或SD卡的情况下? 再次感谢 - – TonyMLake

+0

@Pradeep,我在物理设备上运行这个。尝试编写逻辑来判断外部SD卡是否可用于下载文件或是否需要切换到内部文件。我认为getExternalStorageState可用于确定外部SD卡是否存在。我错过了什么? – justdan0227