2

当发生自动更新时,我的应用程序首选项中保存的旧日期将被删除。
我怎样才能防止这种删除?
我希望当我的应用程序自动更新时,它不会删除我保存的旧数据。

4

2 回答 2

1

我不确定这是否是一个好的解决方案,但只是一个您可以尝试的建议。

第 1 步:每当您更改(添加/编辑/删除)您的数据将其存储在永久存储中时,您可以尝试以下任何操作

 a. save the data in file in sd card
 b. store the data to your remote server or 
 c. store in internal memory of the phone. 

(我不确定在案例c更新后它是否会持续存在,供参考可以在这里查看

第 2 步: 创建一个BroadcastReceiver监听ACTION_PACKAGE_REPLACEDIntent。这样您就知道您的应用程序包何时更新。现在再次从您保存数据的存储中读取数据(1a/1b/1c)

警告:在他不关心的情况下保存用户数据不是一件好事。

于 2013-03-12T12:58:00.247 回答
1

Android 将您的 SharedPreference 保存在 /data/data/your package name/shared_prefs 下

通常,更新应用程序不会删除您的 sharedPreference。

private void replaceNonSystemPackageLI(PackageParser.Package deletedPackage,
        PackageParser.Package pkg, int parseFlags, int scanMode, UserHandle user,
        String installerPackageName, PackageInstalledInfo res) {
    ...
    // First delete the existing package while retaining the data directory
    if (!deletePackageLI(pkgName, null, true, PackageManager.DELETE_KEEP_DATA,
            res.removedInfo, true)) {
        // If the existing package wasn't successfully deleted
        res.returnCode = PackageManager.INSTALL_FAILED_REPLACE_COULDNT_DELETE;
        deletedPkg = false;
    } else {
        ....
    }
    ....
}

我认为您需要检查以下内容:

  1. 您的设备是有根设备吗?有根设备上的应用程序可以删除他们想要的任何内容。

  2. 您是否在更新的 apk 中使用了不同的包名称?

于 2013-03-12T13:40:51.270 回答