【问题标题】:Store data in the internal memory not on the sd card?将数据存储在内存中而不是在sd卡上?
【发布时间】:2011-10-03 13:47:04
【问题描述】:

我一直在为 Android 开发基于内容的应用程序,我有超过 120 MB 的数据需要存储在手机上。当用户第一次运行应用程序时,我会从服务器下载这些数据。我的第一个问题是,是否可以使用 Context.getDir() 方法将此数据存储在应用程序的内部存储器中,或者使用 Environment.getExternalStorageDirectory() 将其存储在 sd 卡上更好( )。将其存储在 sd 卡上的问题是,我必须以某种方式保护这些数据,否则其他所有应用程序或人都可以访问它们。我的第二个问题是否可以将这么多数据存储在应用程序的内部存储器中,那么它们在那里是否安全?

【问题讨论】:

    标签: android


    【解决方案1】:

    第一个问题第二个问题


    如果你打算将文件保存到内存,你只需要调用这样的方法:

    FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);

    如果您设置Context.MODE_PRIVATE,它对其他应用程序甚至您和用户都不可见。当然,这个MODE_PRIVATE只对没有root权限的手机有用。已经root的手机无论是否设置了PRIVATE MODE,都可以访问内存中的任意文件夹。

    因此,如果您决定将文件保存在内部存储器中,无论大小如何,如果您认为这些文件应该保密,则需要使用某种加密。

    至于大小,120MB 对于保存在内存中的数据文件来说有点过大。 Nexus One 同一时代的手机通常有 512MB 的内存,所以从用户的角度来看,他们不喜欢过大的应用程序占用内存,因为内存不足有时会导致 Android 操作系统停止接收短信和停止同步。

    总而言之,由于几乎所有 Android 手机都具有 root 访问权限,因此将您的应用私有数据直接保存到外部或内部存储器是不安全的。至于你 120MB 的数据大小,我建议你做一个简单的加密并保存到 SD 卡。

    这是一个很好的explanation on two storage types on saving files

    这是来自Android Developers 的保存选项供您参考。

    【讨论】:

      【解决方案2】:

      您必须研究如何保护您的数据,因为您的应用程序数据应该部署/下载到外部存储 sd 卡中作为示例。 因为许多现代智能手机依赖内存中的内部存储来运行应用程序。

      这就是为什么我认为您不应该在内部存储中安装应用程序数据。 我学到了这个为 windows ce 开发的,windows mobile 类似的操作系统设备。

      谢谢,

      【讨论】:

      • 我最终决定将它们存储在sd卡上并加密它们!!谢谢
      【解决方案3】:

      我的建议在内存中。

      大多数设备应在内部存储和 SD 卡之间共享相同的存储分区。无论哪种方式,您都会消耗相同的存储空间。从用户的角度来看,SD卡和内部存储并没有什么不同,只是SD卡中的数据可以以某些不是您想要的方式共享。

      【讨论】:

      • 我不同意您关于“大多数”设备具有与内部和外部共享的相同存储分区的说法。对于大多数设备来说,这是完全不正确的。最好假设内部存储是有限的,外部存储(相对)不是这样..在我的手机上消耗 120mb 内部存储的应用程序(应用程序可使用 756mb 内部存储)将在我全新的顶部快速卸载生产线设备。
      • 我理解您的担忧。我假设这是因为我的 Android 3.2 表似乎是以这种方式配置的。因此,我认为会是这样的趋势。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      相关资源
      最近更新 更多