Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将少数应用程序的数据存储在一个位置?_Android_Sqlite - Fatal编程技术网

Android 如何将少数应用程序的数据存储在一个位置?

Android 如何将少数应用程序的数据存储在一个位置?,android,sqlite,Android,Sqlite,我在同一个引擎上构建了几个应用程序。此引擎正在SQLite中存储数据。所有应用程序的数据库结构都相同。我需要为所有这些应用程序组织一个公共存储 例如,有一个应用程序A和B。首先用户安装应用程序A并添加数据,然后安装应用程序B,这是同步这两个应用程序的数据库所必需的。使用内容提供商的功能将不起作用,因为在这种情况下,如果没有应用程序a,应用程序B将无法工作。此外,我们也不知道哪个应用程序用户首先安装 有一个想法是同步所有应用程序的数据库,每个应用程序将保留其自己的数据库,但我将有一个数据库的副本。

我在同一个引擎上构建了几个应用程序。此引擎正在SQLite中存储数据。所有应用程序的数据库结构都相同。我需要为所有这些应用程序组织一个公共存储

例如,有一个应用程序A和B。首先用户安装应用程序A并添加数据,然后安装应用程序B,这是同步这两个应用程序的数据库所必需的。使用内容提供商的功能将不起作用,因为在这种情况下,如果没有应用程序a,应用程序B将无法工作。此外,我们也不知道哪个应用程序用户首先安装

有一个想法是同步所有应用程序的数据库,每个应用程序将保留其自己的数据库,但我将有一个数据库的副本。意味着安装的应用程序数量与我拥有的数据库数量相同

也许有一种巧妙的方法可以实现这个想法?

为什么不尝试在所有应用程序中使用它呢。通过此功能,您还可以访问其他应用程序的数据

假设您已经知道所有其他应用程序,在第一次加载每个应用程序时,您将开始搜索创建数据库的公用文件夹。此文件夹可以位于SD卡中。如果您在那里找到DB文件,那么您可以打开它并使用它。否则,您将创建一个。然后在所有应用程序中使用相同的数据库


我不确定从不同的应用程序打开/写入同一数据库会有什么影响。可能您需要找出写入期间锁定机制的方法(可能在写入数据库时创建.lock文件?

您可以将数据库存储在外部存储器上,并从所有应用程序访问它(使用)

使用该类访问它并从中读取/写入数据


由于从多个进程访问会导致锁定,因此我建议您自己使用一个名为/packagename的锁定应用程序文件进行管理,以便可以在应用程序之间同步数据访问。

我遇到了同样的设计问题(使用同一引擎的多个应用程序包含持久的SQLite数据库表、服务和大量逻辑)

在我做了自己的研究之后,我担心得出的结论是,唯一的方法是:以谷歌的方式做那件事

这是谷歌为解决这个问题而制定的一个过程,针对他们自己的场景-引擎应该始终对所有应用程序(包括他们自己的应用程序)可用。这意味着它是一个独立的应用程序,向所有应用程序公开it服务和内容提供商

Google通过Google Play store应用程序在后台无缝安装Google Play服务。这是任何其他应用程序都无法拥有的特权,因为它们控制着这两个应用程序以及操作系统Android本身(不公平!)

所以,如果你能强迫你的用户只为你的引擎下载专用的应用程序(比如谷歌),那就太棒了


如果没有-那么你必须在那之前安装一个主/主应用程序,并且它是唯一一个向所有其他人公开数据和服务的应用程序。

你能从更高的层次解释一下你想要完成什么吗?我想知道用户为什么要安装多个类似的应用程序。这会是常见的吗n让他们这么做?所以,我的第一个应用程序是我的第二个应用程序是两个应用程序都有聊天历史记录。所以,当他们安装在同一台设备上时,我需要在booth应用程序上有相同的会话历史记录。请看:你说的是Google play服务。是的,这是一个正确的想法,但这里有一个问题-只有Google才允许强迫人们登录高附加应用。如果我这样做,90%的用户将拒绝安装附加应用。另外,亚马逊在其设备上没有Google play服务,也不允许发布没有Google play服务就无法运行的应用。是的。但是,你仍然可以告诉你的用户,为了使用你的一个应用,他们必须重定向到你的英语下载页面当然,很多用户会拒绝,但这仍然是一个选择。。