我将使用新的数据结构发布我的应用的更新,因此如果用户正在更新我的应用,我需要更新他们的当前数据。所以我想知道如何以编程方式检查用户是否更新了我的应用程序或安装了新副本(如果安装了新副本,我不需要更新任何内容)?
答案 0 :(得分:8)
如果您的数据位于SQLite数据库中,则可以在SQLiteOpenHelper.onUpgrade()
中实现代码。
如果没有,您需要某种方式来检查在设备上打开的先前版本。类似的东西:
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
// Use SharedPreferences to store something like "LAST_VERSION_RUN" = pInfo.versionName
然后,您可以检查以前的版本是否不等于当前版本。当然,这种代码也必须在以前的版本中。一旦应用程序已经处于狂野状态,就无法实现检测应用程序是否已升级的代码。
我认为在这种情况下您可以执行的操作是检测应用程序版本,然后设置标志以不再次更新数据模式。所以,假设您的应用版本是1.0.2,现在是1.0.3:
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
if (pInfo.versionName.equals("1.0.3") && /* some SharedPreference value */ == false) {
// upgrade
// set SharedPreference value to true
}
如果您不使用SQLite,我认为这将是实现此目的的最佳方式。