自动更新前保存数据

时间:2013-03-12 12:41:25

标签: android

发生自动更新时,我的应用的偏好设置中的旧日期保存会被删除 如何阻止此删除?
我希望当我的应用程序自动更新时,它不会删除我保存的旧数据。

2 个答案:

答案 0 :(得分: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更新后是否会继续存在,以供参考,可以查看here

第2步:创建一个监听BroadcastReceiver意图的ACTION_PACKAGE_REPLACED。因此,您知道何时更新应用程序包。 NOw再次从保存数据的存储(1a / 1b / 1c)中读取数据

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

答案 1 :(得分:1)

Android将您的SharedPreference保存在/ data / data /您的包名/ 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. 您的设备是否为root设备? root设备上的应用可以删除他们想要的任何内容。

  2. 你在更新的apk中使用了不同的包名吗?