【问题标题】:Accessing database from two different apps从两个不同的应用程序访问数据库
【发布时间】:2013-02-05 10:26:51
【问题描述】:

我正在创建一个应用程序的高级版,我已经为其发布了免费的精简版。我想将数据从精简版传输到高级版,或者让两个版本访问同一个数据库。 Android, two apps one database? 帮助回答了后面的操作。如果数据库是在精简版中创建的,那么当用户安装高级版时会发生什么?他们是否必须安装精简版才能保留数据?另一方面,我能否在独立于任一版本但仍处于沙盒状态的位置创建数据库?最终,我希望能够允许用户在安装 Premium 版本后删除 Lite 版本,但仍保持所有数据完好无损。我该怎么做呢?还是我坚持让我的用户在升级到高级版后仍然安装这两个版本?

【问题讨论】:

  • 您可以拥有它,以便在首次运行高级版时,它会检查免费应用程序的内容提供商是否存在。如果找到,则将整个内容复制到存储在高级应用程序中的内容中。然后,高级应用程序只访问它自己的提供商,而不是从那时起免费的。唯一棘手的事情是,如果由于某种原因用户重新使用免费版,高级版不会得到他们所做的任何更改,但您可以通过在免费应用程序中检测到这种情况并通知用户或询问他们是否打算打开付费应用。
  • 您是否有兴趣将数据放在应用程序外部的共享位置?如果是这样,我可以描述一下选项。
  • @ryan1234 这听起来像我要找的。但是,我仍然希望只能从我的应用程序或通过 ContentProvider 访问数据。我宁愿不将数据放在任何人都可以访问的共享位置。
  • @littleFluffyKitty 感谢您的想法。这听起来很像我所说的“将数据从精简版转移到高级版”。我将继续进一步探索该选项。

标签: android database android-contentprovider


【解决方案1】:

我建议至少研究一下 CouchDB 来托管数据。您将数据创建为文档(以 JSON 格式),然后创建包含文档的数据库。

此外,您还可以创建数据视图 - http://wiki.apache.org/couchdb/HTTP_view_API。您可以将参数传递给视图以过滤数据等。

您可以使用 Cloudant (https://cloudant.com/) 或 IrisCouch (http://www.iriscouch.com/) 创建示例 CouchDB。我知道 Cloudant 支持 HTTP 身份验证,因此您可以在 Android 设备上使所有调用看起来像这样:

@987654324@

另一种选择是查看 TouchDB,它为您处理来自 CouchDB 的复制。 https://github.com/couchbaselabs/TouchDB-Android 请记住,该项目现在有点落后,所以我认为它还没有准备好生产,但他们今年重点关注它,所以它应该很快就会推出。

只是建立具有身份验证的共享数据库的一个选项。然后,您可以托管相同的数据,并将精简版与高级版的内容严格保留在 UI 中。

【讨论】:

  • 感谢您的建议。目前,我想保持简单,因此更喜欢将数据本地存储在设备上的解决方案。我想在未来的版本中添加配置,以便用户可以指定存储位置,所以我会记住这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多