我有一个应用程序,我需要更新数据库的新数据。没有其他更新,没有架构更改,没有代码更改。我想要做的就是将一些行添加到用户无法修改的数据库中。
通常在首次安装时,我会从assets/
复制数据库。之后,当程序运行时,我检查/data/data/my.package/databases
中是否存在DB文件,如果存在,我不再复制。
现在,新版本的应用程序将保持完整的数据库,我想为那些拥有旧版本的人添加新行。我有几个选择:
onUpgrade()
的{{1}}功能插入行。我不想这样做,因为有很多行,我宁愿把它们放在要导入的SQLiteOpenHelper
文件夹中。有没有办法从assets/
内访问assets/
?onUpgrade()
复制新行。为此,我无法弄清楚应该检查什么。运行时无法知道旧的应用程序版本。我想过使用assets/
或PackageInfo.firstInstallTime
并检查一个时间,如果用户在此之前安装/更新,那么他们显然有我正在寻找的第一个版本。我知道这很容易出错,但我现在已经把这个应用程序从市场上撤下了,所以我有一些余地。另一种表达这个问题的方法是:如果我正在升级应用程序并且我在PackageInfo.lastUpdateTime
中有一些文件要么删除或更新,那么根据版本更改,我该如何实现因为我不知道以前的版本安装了什么?
答案 0 :(得分:0)
onUpgrade
回调会告诉您旧版本和新版本。