除了使用SharedPreferences提供自定义解决方案之外,还有一种方法可以检测我正在运行的应用程序是否是先前安装的版本与新安装的更新?
我可以查询API中是否存在任何奇异值?
答案 0 :(得分:2)
您可以通过versionCode或versionName知道!
但我认为您应该使用versionCode来检测应用程序是新安装还是更新。在用户安装应用程序时第一次保存versionCode的值,当有新的更新时,新的versionCode的值将比以前的versionCode更多,因为版本代码总是会增加。
VersionName只是一个字符串,呈现给用户以便用户可读。
public int getVersion() {
int v = 0;
try {
v = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
} catch (NameNotFoundException e) {
}
return v;
}
答案 1 :(得分:1)
问题在于我改变了计算游戏中得分的公式。我需要获取我在SQLite中的当前分数,并在发布到服务器之前将其与MD5值一起调整。检查我已经拥有的分数值是不是很容易,使用了之前的或最新的公式。
要使用SQLiteOpenHelper
在升级时更新SQLite数据库中的数据,只需提高数据库版本号并在onUpgrade()
中写入所需的迁移代码。如果需要创建或升级数据库,Android框架将负责调用onCreate()
或onUpgrade()
。
要与后端服务器通信,请在邮件中包含一些应用程序版本信息。这可以是例如其他答案中建议的清单versionCode
。您更容易更新后端服务器中的代码,因此您可以在后端端处理特定应用程序版本中的怪癖。如果缺少版本信息,您可以假设该应用程序是“旧”。