android - 更新时清除应用程序数据

标签 android version-control versioning android-version

当用户更新来自 Google Play 商店或任何其他来源的应用程序。这是因为我不需要旧应用程序中的任何现有数据,因为与旧应用程序相比,我已经更改了新应用程序中的所有内容。

我想在应用程序启动时实现版本检查,但我找不到获取应用程序的previous versionCodeversionName。我想出清除数据的唯一方法是在发布应用程序时检查 lastUpdateTime。但它并不可靠,因为用户可以通过其他方式或来源获取该应用程序(例如与 friend 分享,或者如果用户有旧应用程序的备份)。

有什么建议吗?

最佳答案

您可以将versionCode存储在SharedPreferences中并与当前的versionCode进行比较

要清除所有数据,您只需清除 SharedPreferences、本地数据库和您存储的所有本地文件的所有值。

public void clearData()
    {
        try {
            PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
            int mCurrentVersion = pInfo.versionCode;
            SharedPreferences mSharedPreferences = getSharedPreferences("app_name",  Context.MODE_PRIVATE);
            SharedPreferences.Editor mEditor = mSharedPreferences.edit();
            mEditor.apply();
            int last_version = mSharedPreferences.getInt("last_version", -1);
            if(last_version != mCurrentVersion)
            {
                //clear all your data like database, share preference, local file 
                //Note : Don't delete last_version value in share preference
            }
            mEditor.putInt("last_version", mCurrentVersion);
            mEditor.commit();
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
    }

注意:不要删除共享偏好中的last_version值。

关于android - 更新时清除应用程序数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48520051/

相关文章:

git - fatal : clean. requireForce 默认为 true 且未给出 -i、-n 或 -f;拒绝打扫

Java 版本控制和术语,1.6 vs 6.0 OpenJDK vs Sun

javascript - n 模块中断 npm

android - 自动完成 Google Places 示例

java - 安卓数据库的安全 key

java - 无法上传到 Android Studio 中的 Parse Server

iphone - iPhone 项目中应将哪些文件置于版本控制之下?

java.lang.NullPointerException : Loading three charts (from github) into a 2x2 GridView

部分 merge 的 Git 工作流程?

ruby-on-rails - Rails 多个异常处理程序,每个路由命名空间为 "exceptions_app"