和其他许多人一样,我的应用程序会有“精简版”和“专业版”。他们使用数据库,该数据库将位于内部存储中。我希望用户能够购买专业版并安装它而不会丢失数据库。
部分解决方案: 我已经看到有关如何让多个应用使用相同数据库的其他帖子。从本质上讲,这需要两件事:
- 两个清单都在清单中声明了相同的android:sharedUserId,
- 其中一个应用必须使用其他应用的上下文打开数据库。
醇>
我试过这个,是的,它有效!
问题:卸载精简版会删除数据库。请遵循以下步骤:用户安装lite版本。 lite版本创建数据库,他很乐意在其中创建和保存数据。后来他决定安装专业人士。专业版访问lite创建的数据库,一切正常。最后,他解除了精简版,因为他不再需要它了。现在,专家将停止工作,因为在卸载精简版时,Android已删除了数据库。
什么解决方案?我想到的一个解决方案是拥有一个拥有数据库的第三个应用程序。它是一个“无所事事”的应用程序,它简单地安装并与包具有相同的名称。它没有UI,实际上永远不会运行。然后,可以安装或卸载lite和pro应用程序,而不会影响数据库。
这是个好主意吗?有没有更好的方法(除了为数据库创建提供程序)?如果这是一种合理的方法,我如何创建一个没有非服务UI的应用程序?
答案 0 :(得分:3)
听起来你决定购买专业应用程序的应用内购买,但这可能也是一个可行的解决方案。
在您的帖子中,您有一个包含数据库的精简版应用。当用户购买专业应用程序时,您有专业版应用程序访问lite数据库进行读/写。如果这些假设成立,为什么不执行以下操作:
当专业应用程序启动时,让它创建一个数据库,所以专业应用程序现在有自己的数据库。
创建该数据库后,检查精简应用程序数据库是否存在,我假设您已经这样做,因为您正在专业应用程序中打开精简应用程序数据库。
如果lite app db存在,请将lite app db中的数据写入pro app db。现在在您的专业版数据库中,您将拥有所有精简版数据库。使用专业应用程序时,应用程序应该调用自己的数据库,而不是精简数据库。现在,来自lite应用程序的数据被转移到专业版,用户可以卸载lite应用程序而无需担心数据会丢失。
如果精简版数据库不存在,则没有任何反应,专业版应用程序会加载自己的数据库,空白数据(或者您可能需要预加载的任何内容)。
答案 1 :(得分:1)
为什么你的服务器上没有数据库,无论何时安装应用程序(无论精简版还是专业版)只是从服务器中提取数据库(并覆盖存在的数据库),这对你的数据库安全,因为我可以简单地使用zip softwar浏览apk文件并获取您的数据库。 另一个好处是apk文件的大小会更小,更重要的是它会解决你的问题