android - 检查用户是否更新了应用程序或安装了新副本?

标签 android

我将使用新的数据结构为我的应用程序发布更新,因此如果用户正在更新我的应用程序,我需要更新他们的当前数据。所以我想知道如何以编程方式检查用户是否更新了我的应用程序或安装了新副本(如果安装了新副本我不需要更新任何东西)?

最佳答案

SQLite

如果您的数据在 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,我认为这将是实现它的最佳方式。

关于android - 检查用户是否更新了应用程序或安装了新副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13661725/

相关文章:

android - 实现Maven项目的内部依赖关系

android - 切换到 appCompat 和 v4 到 23.0.1 后 DrawerLayot 组件出现异常

android - Dagger 2 - 在两个 Activity 之间共享实例

android - 如何获得有关任何证书更改的通知

android - 如何从 Android Studio 获取仪器 APK?

Android Realm删除对象列表的误区

java - 即使检查是否为空,.iterator() 也会产生空指针异常

android - 如何从服务获取数据到 Activity

android - 运行 hello world - 没有在屏幕上显示 hello world

android - 无法正确获取纬度和经度