内部/标准卡的Environment.ExternalStorageDirectory

时间:2012-01-29 09:45:43

标签: android xamarin.android data-storage

Environment.ExternalStorageDirectory究竟返回了什么?我从开发人员文档中读到:

  

注意:不要在这里混淆“外部”这个词。此目录最好被视为媒体/共享存储。它是一个文件系统,可以容纳相对大量的数据,并在所有应用程序之间共享(不强制执行权限)。传统上这是一张SD卡,但它也可以作为内置存储器实现,该设备不同于受保护的内部存储器,可以作为文件系统安装在计算机上。

我是否理解如果我的设备有一个大的(16GB)内存并且没有SD卡,这将返回内部存储器的路径? 或者,我是否必须检查SD卡是否已安装,如果没有,请使用ApplicationContext.FilesDir

我想我要问的是,如果我的应用程序需要下载250MB的数据,我怎么知道它的存储位置? - 因为我想使用“正确”的位置。

2 个答案:

答案 0 :(得分:3)

  

我是否理解如果我的设备有一个大的(16GB)内存且没有SD卡,这将返回内部存储器的路径?

它将返回外部存储的路径。在具有您描述的特征的设备上,外部存储将是:

  • 该16GB板载闪存(Android 2.x)或
  • 的单独数据分区
  • 16GB板载闪存(Android 3.0 +)
  • 的主数据分区内的目录
  

或者,我是否必须检查SD卡是否已安装

外部存储器可以安装在主机PC上,无论外部存储器是由SD卡,板载闪存的一部分还是小精灵粉尘代表。

在Android 2.x上,如果外部存储装载在主机PC上,则应用程序无法使用。因此,如果您支持Android 2.x,则需要检查外部存储是否可用,无论外部存储的实现方式如何。

  

我想我要问的是,如果我的应用需要下载250MB的数据,我怎么知道在哪里存储它?

将它放在外部存储设备上。如果外部存储不可用,请不要下载数据并告诉用户从主机PC卸载手机。有许多Android 2.x设备甚至 250MB的内部存储空间适用于所有应用程序,更不用说仅供您使用。

答案 1 :(得分:0)