【问题标题】:Using same sqlite database in multiple Android Apps在多个 Android 应用程序中使用相同的 sqlite 数据库
【发布时间】:2016-04-27 16:10:02
【问题描述】:

我有一组 4 个应用程序,它们都需要一个通用数据库。用户可以先使用任何应用程序,该应用程序会创建 sqlite 数据库。

我想我可以使用SQLiteOpenHelper中的完整路径在特定文件夹中创建数据库,也许我可以在特定路径中创建数据库并让所有应用程序都使用这个数据库,但是数据会失去安全性。

我检查了一些建议使用ContentProvider 或sharedUserId 的答案,但这些示例适用于应用程序想要共享其数据的场景,在这种情况下是所有应用程序的通用数据库,如何我在这种情况下使用ContentProvider?

什么是实现这一目标的好方法?

【问题讨论】:

  • 我们已经构建了一个专有系统,其中有很多应用程序访问同一个数据库,我们使用ContentProvider 做到了这一点。我认为这是要走的路。 ContentProvider 的示例是相同的:共享其数据的应用程序与所有应用程序的数据库相同。
  • 感谢 cmets,@m0skit0 你的情况真的很相似,听起来 ContentProvider 是要走的路,但我不知道什么应用程序会创建数据库,这个想法是“第一个用户打开的应用程序创建数据库”,也许我只需要一个特定的应用程序创建数据库并引导用户打开该数据库,然后他们才能使用所有应用程序。
  • 好的,我明白了。我认为要走的路是在您的所有应用程序中包含ContentProvider。当应用程序运行时,它会检查 ContentProvider 是否存在。如果是这样,它只会使用那个。如果没有,它会设置并公开它。我能想到使用这种方法的唯一问题是您可能无法在清单中声明ContentProvider。在我们的例子中,由于我们拥有系统,我们有一个专用的Service,它具有ContentProvider,所有其他应用程序都依赖于这个Service。
  • 我明白了,我会尝试类似的方法。感谢您的评论。

标签: android sqlite android-contentprovider


【解决方案1】:

最好的方法是在您的一个应用程序中使用 ContentProvider,并在您的其他应用程序中使用 URI。至于今天,这是您可以在多个应用程序中“共享”数据库的唯一方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2016-05-14
    • 2011-01-28
    • 1970-01-01
    相关资源
    最近更新 更多