如何私下存储Android中的大数据量?

时间:2014-08-27 12:08:32

标签: android storage privacy android-external-storage internal-storage

问题是我如何存储大量数据(几百Mb甚至更多)并同时仅为我的应用程序保留它?

我发现内部存储空间有限,其大小取决于设备型号。它可以用于大数据量存储吗?我可以在内部存储中存储500Mb甚至更多吗?

另一种方法是使用外部存储。据我所知,外部存储不限制应用程序,它可以使用整个外部存储。但是,数据可供用户和其他应用程序使用,在我的情况下这是不可接受的。有没有办法让存储在外部存储中的数据私有,好像它存储在内部存储中一样?

3 个答案:

答案 0 :(得分:1)

  

我发现的内部存储空间有限,其大小取决于设备型号

仅适用于Android 1.x / 2.x.在浩大的大多数Android 3.0+设备上,内部和外部存储位于同一分区,因此具有相同的空间。

  

我可以在内部存储中存储500Mb甚至更多吗?

在Android 3.0+上,可能。用户可能没有500MB的免费空间,但这不是内部存储的限制,而是一般的“存储”限制。

  

有没有办法让存储在外部存储中的数据像存储在内部存储中那样私有?

不是真的。例如,您无法阻止用户或其他应用删除这些文件。您可以使用Facebook的Conceal库加密外部存储上的文件,并将生成的加密密钥存储在内部存储上,以防止用户或其他应用程序更改文件的内容(除了简单地破坏它们)。但是,如果你仍然支持Android 1.x / 2.x,这只会是相关的。在Android 3.0+上,只需使用内部存储。

答案 1 :(得分:0)

考虑到你有两种可能的方法限制你,你可以了。

  • 使用内部存储,但请务必检查可用内存,并且无论何时设备无法处理,都要让用户知道他们的设备无法运行您的应用。
  • 使用外部存储器并在其上构建一个很好的加密,因此即使其他人获取文件,如果没有正确的解密机制,它们上的实际数据将毫无意义。

选择哪个选项是产品决策。

答案 2 :(得分:0)

您可以使用getExternalFilesDir()限制媒体商店内容提供商从外部存储中读取您的应用特定文件。但我认为具有READ_EXTERNAL_STORAGE相同权限的任何其他应用程序都可以访问这些文件。唯一的办法就是使用内部存储器。

我不确定您要存储的文件类型。如果文件数量较少,您可以考虑使用数据库,尽管这会违反ACID原则。或者,您可以考虑使用内容提供商进行限制。