如果您还没有存储版本代码的方法,那么这种方法应该可行:
首先获取当前版本代码如下,在onCreate()方法中:
public int versionCode;
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
versionCode = pInfo.versionCode;
添加代码保存当前版本代码如下,在onStop()方法中:
SharedPreferences sp = getSharedPreferences("prefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("version_code", versionCode);
editor.commit();
然后在onCreate()方法本身获取上一版本代码如下:
public int prevVersionCode = -1;
SharedPreferences sp = getSharedPreferences("prefs", Activity.MODE_PRIVATE);
int prevVersionCode = sp.getInt("version_code", -1);
if(prevVersionCode == -1) {
// this will happen on a previous app version
}
如果 prevVersionCode 等于 -1 ,则表示这是已更新的旧版本应用程序。
如果 prevVersionCode 不等于 -1 ,这意味着刚刚更新应用程序的版本比添加此保存代码的版本新。
现在您可以使用 versionCode 和 prevVersionCode 轻松比较版本,请注意,如果 prevVersionCode 等于 -1,则表示之前该应用程序的版本没有存储方法,但现在它已更新到较新的版本。
例如: 假设应用当前的版本代码为 13,您添加此代码并使用版本代码 14 发布更新。所以当用户更新应用时,prevVersionCode 将等于-1,你可以做任何你想做的事。 versionCode 将等于 14,但 prevVersionCode 将给出 -1,仅在首次运行时。重新启动时,versionCode 和 prevVersionCode 都会给出 14。
现在假设您进一步更新您的应用并使用 versionCode 15 发布更新。现在在更新应用的首次运行时,versionCode 将给出 15,但 prevVersionCode 将给出 14。但重启后 both 将给出 15。