2011-09-09 49 views
6

许多与我的应用程序中下载内容的存储位置有关的独立但相关的问题。Android - 在哪里存储下载的内容,内部与外部存储?

我有一个从中央服务器下载内容的应用程序。此内容有时是优质内容,或者至少是出版商不希望其自由分发的内容。我知道“外部”存储容易访问,而“内部”存储受到保护,除非电话是根植的。

如果应用程序安装在SD卡上(因为我的配置是),那么SD卡上是否也有“内部”存储?因此,如果我的SDCARD安装的应用程序下载了100MB内容到内部存储器,那么它实际上是在SDCARD上结束,还是在设备的物理板载存储器中结束?

如果应用程序安装在SD卡上,并且下载内容的“内部”存储位于SD卡上,那么它是以实际存储的开放格式还是加密的?我似乎记得读取存储在SDCARD上的应用程序是加密的。这是否也适用于“内部”存储?

(删除有关在一个单独的目录为Context.getDir()存储文件的问题意味着一个目录系统,可以创建和维护内部存储)

有没有更好的方法吗?

回答

4

难道一堆实验,并在摩托罗拉Droid 2来到了以下结论与Android 2.2:

  • 当安装应用程序/移动到的SD卡,然后它被存储为在.asec文件SDCARD上隐藏的/.android_secure目录。这是一个加密和压缩文件。
  • 当应用程序在“内部存储器”中创建数据文件时,它们存储在设备的内部存储器中,SD卡上的而不是
  • 应用程序的“设置/管理应用程序详细信息”对话框具有“数据”值 - 这是应用程序在其内部存储器中使用的数据量,即不在SDCARD上的内部存储器中的数据量
  • 外部存储确实会在/ Android /数据目录下的SDACRD中结束
  • 清除设置/管理应用程序详细信息对话框中的数据确实会擦除所有内容,这意味着已安装的应用程序需要有足够的知识/逻辑来处理“无数据”情况。

我的应用程序是一个下载内容的应用程序。这一切都对我意味着是:

  • 有一个在存储我的SD卡小应用程序因为存储会消耗手机上的大部分将在设备的内存中几乎没有真正的价值。当然,它总是可以让应用程序安装在SDCARD上。
  • 安装包需要能够恢复用户下载的内容,如果它被用户擦除。
  • 在内部存储器中存储unique installation id的概念运行良好,直到用户删除应用程序的数据并因此导致计算新的安装标识。因此,为了能够记住下载到设备的内容,需要在中央服务器上有用户帐户,用户在从头开始时创建/登录到用户帐户。