这是上下文。 我想要一个免费版本和相同应用程序的高级版本。当人们购买应用程序时,我希望他们能够“升级”而不会丢失他们的数据,即高级版本应该安装在免费版本上。 我想使用相同的代码库,只需切换设置即可构建高级版本。 Andoid Market不允许我将免费应用转换为付费应用,因此无法提供简单的选项。
如果有人成功尝试过,我很好奇。 Android Market如何识别应用程序 - 它会认为高级版本是不同的应用程序并且只是并行安装吗?
答案 0 :(得分:1)
我的想法如下:
android:versionCode
应该是免费的android:versionCode
+1 安装付费版本后,它将替换免费版本。
实际上它会更新它,因为它有更高的android:versionCode
。
由于两者都有相同的包,它们将被放置在同一个文件夹(/data/data/your.package
)中,因此付费应用程序将能够访问免费的应用程序数据库。
答案 1 :(得分:1)
答案是:Android Market无法解决此问题,因为Market不允许上传两个具有相同包名称的应用。 Android不能被欺骗在免费版本上安装高级版本并将其视为升级。
好消息:添加数据库备份/恢复功能(将数据库复制到SD卡并返回到app文件夹)只需要几行代码。我的用户必须并行安装这两个版本,从免费版本备份数据库并将其恢复到高级版本。
答案 2 :(得分:1)
免费应用程序可以公开WRITE_EXTERNAL_STORAGE
,付费应用可以提供ContentProvider
,而不是将数据库备份到SD卡(来自@cdonner建议)(需要{{1}}权限)。用来传输数据。
请务必use permissions确保您的内容安全。