2012-11-13 47 views
1

我有一个简单的应用程序,应该处理(显示,播放...)用户下载的数据。即当用户下载应用程序(免费)时,它是空的,或者只填充一些示例数据,但用户可以下载他们的偏好的实际内容(并可能通过Android计费系统支付)。每个项目都是一个带有xml文件和多个子文件夹(如音频和图像)的文件夹。在开发阶段,数据存储在资产目录中。下载(支付)的内容到Android应用程序

付款本身并不是这个问题的主题。我在下面真正感兴趣:

  • 我在哪里可以下载的数据存储在手机里,这样它会为应用程序访问,但因此它不能由用户手动(复制例如到另一部手机)。如果我可以将下载的数据存储在资产目录中,这将是理想的,但是恐怕一旦生成apk文件,资产被“锁定”并且不能被轻松扩展(或者它们是否可以)?如果我将它们存储在电话的(或内置存储器),他们也可以通过媒体播放器或画廊等其他应用程序访问,不是吗?
  • 如果我可以将软件包作为一个单独的文件下载,这将是非常好的 - 是否可以通过内置方法将其打包并将其作为具有upacked(因此可读)的子文件夹和文件的文件夹存储?
  • 当应用程序被下载时,它是一个apk文件。因此,应该可以将样本数据(即与应用程序一起下载)放置在稍后将要下载的数据的相同位置。我如何确保这一点。
  • 数据可能非常大,因此它不是一个选项,可以在下载后立即将它们全部包含在资产文件夹中,并根据用户的操作对其解锁并解锁。
  • 一旦数据被下载,它们必须脱机工作(即用户必须能够在不上网,以显示它们,因此它不是可以检查服务器上的用户的身份 - 他们可以简单地显示任何他们先前已经下载)

示例(出于说明目的):有一个应用程序能够显示食谱。它在安装后不包含任何或仅包含几个。您应该能够从服务器(每个都有一个存储在独立目录中的特定文件结构)下载食谱(一个接一个)。一旦下载完成,它们将成为应用程序的一个组成部分,并且即使使用手机的飞行模式,用户也可以随时访问。

希望它至少有一些意义(如果没有,我可以进一步澄清问题)。我已经找到了关于如何处理存储在资产中的数据以及如何在SD卡上处理数据的教程,但没有涉及这个特定主题。

回答

2
  1. 您可以将您的日期存储在您的应用程序数据文件夹中,基本上它仅适用于您的应用程序。如果要防止将数据复制到另一部手机,请在第一次运行时生成随机UUID,然后使用它来加密存储在数据文件夹中的数据。另一部电话将具有不同的UUID和不同的加密密钥,这使得试图复制加密数据毫无意义。您甚至可以使用非对称加密,并将生成的(公用)密钥发送到服务器,并让服务器对数据进行编码并以加密形式发回,从而防止您的数据暴露。

  2. assets/文件夹一般是只读的,你可能只在构建步骤把你的数据在那里。

  3. 使你的文件的.zip文件 - 这些都是紧凑,你可以很容易阅读文件和文件夹和任何你需要使用java.util.zip.ZipFile

  4. 样本数据进入assets文件夹,你可以出去复制到数据文件夹在第一次运行。

  5. 一旦你下载数据,并将其保存到设备中,我看不出有任何理由为什么你的应用程序将无法在离线

+0

非常感谢@lenik。看起来这可能是我正在寻找的东西。将检查出来。 – Malis

相关问题