android - 使用无操作应用程序托管数据库,以便精简版和专业版可以访问

标签 android database package

像许多其他人一样,我将拥有我的应用程序的“精简版”和“专业版”。他们使用一个数据库,该数据库将存储在内部存储中。我希望用户能够购买专业版并安装它而不会丢失数据库。

部分解决方案: 我看过其他关于如何让多个应用程序使用同一个数据库的帖子。本质上,这需要两件事:

  1. both manifests declare the same android:sharedUserId in the manifest,
  2. one of the apps must open the database using the other app's context.

我试过了,是的,它有效!

问题:卸载精简版会删除数据库。按照这个:用户安装精简版。精简版创建数据库,他愉快地在其中创建和保存数据。后来他决定安装专业版。专业版访问由精简版创建的数据库,一切正常。最后,他卸载了 lite,因为他不再需要它了。现在,pro 将停止工作,因为在卸载 lite 版本时,数据库已被 Android 删除。

什么解决方案?想到的一个解决方案是拥有拥有数据库的第三方应用程序。这是一个“什么都不做”的应用程序,安装简单并且与包同名。它没有 UI,实际上永远不会运行。然后,可以在不影响数据库的情况下安装或卸载精简版和专业版应用程序。

这是个好主意吗?有没有更好的方法(除了为数据库创建提供程序)?如果这是一种合理的方法,我该如何创建不属于服务的没有 UI 的应用程序?

最佳答案

听起来您决定采用专业应用的应用内购买,但这可能也是一个可行的解决方案。

从您的帖子中,您有一个包含数据库的精简版应用程序。当用户购买专业版应用程序时,您可以让专业版应用程序访问精简版数据库以进行读/写。如果这些假设是正确的,为什么不执行以下操作:

  1. 当专业应用启动时,让它创建一个数据库,这样专业应用现在就有了自己的数据库。

  2. 创建该数据库后,检查精简版应用程序数据库是否存在,我假设您已经这样做了,因为您正在您的专业版应用程序中打开精简版应用程序数据库。

  3. 如果 lite app db 存在,将 lite app db 中的数据写入 pro app db。现在在您的专业数据库中,您将拥有所有精简版数据库数据。在使用专业应用程序时,应用程序应该继续调用自己的数据库,而不是精简版数据库。现在lite app的数据已经转移到pro,用户可以卸载lite app而不用担心数据会丢失。

  4. 如果精简版数据库不存在,则什么也不会发生,专业版应用会加载自己的数据库、空白数据(或您可能需要预加载的任何内容)。

关于android - 使用无操作应用程序托管数据库,以便精简版和专业版可以访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14049095/

相关文章:

python - 在 Python 上实现 GARCH 指数对冲

r - 安装时安装包所需的 R 包

android - 使用 ValueAnimator 使 TextView 闪烁不同的颜色

android - onPictureTaken中的图片字节数据为什么会出现镜像?

mysql - 在 GROUP BY 子句中返回空行

java - 将您的应用程序与数据库连接

android - 总是获取 session 状态 :CLOSED_LOGIN_FAILED, token :{AccessToken token:ACCESS_TOKEN_REMOVED in facebook android sdk3. 0。

安卓编程 : Can a particular date be converted as button?

sql - 如何修改这个特定的查询?

java - 如何在公共(public)目录中导入应用程序类