将(付费)内容下载到Android应用程序中

时间:2012-11-13 10:51:25

标签: android download updates

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

此时付款本身不是问题的主题。我实际上对以下内容感兴趣:

  • 在哪里可以将下载的数据存储在手机中,以便应用程序可以访问它,但是无法由用户手动复制(例如到另一部手机)。如果我可以将下载的数据存储在assets目录中,那将是理想的,但是我担心一旦生成apk文件,资产被“锁定”并且不能轻易扩展(或者它们可以吗?)如果我将它们存储在手机上卡(或在内置内存中),它们也可以被其他应用程序访问,例如媒体播放器或画廊,不是吗?
  • 如果我可以将软件包作为单个文件下载,那将会很棒 - 是否可以通过内置方法对其进行升级并将其存储为具有upacked(因此可读)子文件夹和文件的文件夹?
  • 下载应用程序时,它是一个apk文件。因此,应该可以将样本数据(即与应用程序一起下载)与稍后将下载的数据放在同一位置。我该如何确保这一点。
  • 数据可能非常大,因此不能选择在下载后立即将所有数据包含在资源文件夹中,并根据用户的操作解锁它
  • 一旦下载了数据,它们必须脱机工作(即用户必须能够在没有互联网访问的情况下显示它们;因此无法检查服务器上用户的身份 - 他们可以简单地显示任何内容已经下载过)
  

示例(为了澄清目的):让应用程序能够显示配方。它在安装后不包含任何或仅包含几个。您应该能够从服务器(每个具有存储在单独目录中的特定文件结构)下载配方(逐个)。下载后,它们将成为应用程序不可或缺的一部分,即使使用手机的飞行模式,也始终可供用户访问。

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

1 个答案:

答案 0 :(得分:2)

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

    < / LI>
  2. assets/文件夹通常是只读的,您只能在构建步骤中将数据放在那里。

  3. 将您的文件设为.zip文件 - 这些文件非常紧凑,您可以使用java.util.zip.ZipFile

  4. 轻松阅读文件和文件夹以及您需要的任何内容
  5. 示例数据进入assets文件夹,您可以在第一次运行时将其复制到数据文件夹中。

  6. 下载数据并将其保存到设备后,我认为您的应用程序无法脱机工作的原因