像许多其他人一样,我将拥有我的应用程序的“精简版”和“专业版”版本。他们使用一个数据库,该数据库将在内部存储中。我希望用户能够购买专业版并安装它而不会丢失数据库。
部分解决方案: 我看过其他关于如何让多个应用程序使用同一个数据库的帖子。本质上,这需要两件事:
- 两个清单都在清单中声明了相同的 android:sharedUserId,
- 其中一个应用程序必须使用另一个应用程序的上下文打开数据库。
我试过了,是的,它有效!
问题:卸载精简版会删除数据库。按照这个:用户安装精简版。精简版创建数据库,他很乐意在其中创建和保存数据。后来他决定安装pro。专业版访问由 lite 创建的数据库,一切正常。最后,他卸载了lite,因为他不再需要它了。现在,pro 将停止工作,因为卸载 lite 版本时,db 已被 Android 删除。
什么解决方案? 想到的一种解决方案是让第三个应用程序拥有数据库。这是一个“什么都不做”的应用程序,它可以简单地安装并且与包具有相同的名称。它没有 UI,实际上永远不会运行。然后,可以在不影响数据库的情况下安装或卸载 lite 和 pro 应用程序。
这是一个好主意吗?有没有更好的方法(除了为数据库创建提供者)?如果这是一种合理的方法,我如何创建一个没有 UI 的应用程序不是服务?