1

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

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

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

4

3 回答 3

1

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

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

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

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

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

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

于 2014-08-27T12:53:56.007 回答
0

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

  • 使用内部存储,但请确保检查可用内存,并且当设备无法处理时,让您的用户知道他们的设备无法运行您的应用程序。
  • 使用外部存储器并在其上构建良好的加密,因此即使其他人获得文件,如果没有适当的解密机制,它们上的实际数据将毫无意义。

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

于 2014-08-27T12:17:23.293 回答
0

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

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

于 2014-08-27T12:46:44.140 回答