当发生自动更新时,我的应用程序首选项中保存的旧日期将被删除。
我怎样才能防止这种删除?
我希望当我的应用程序自动更新时,它不会删除我保存的旧数据。
问问题
221 次
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_REPLACED
Intent。这样您就知道您的应用程序包何时更新。现在再次从您保存数据的存储中读取数据(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 {
....
}
....
}
我认为您需要检查以下内容:
您的设备是有根设备吗?有根设备上的应用程序可以删除他们想要的任何内容。
您是否在更新的 apk 中使用了不同的包名称?
于 2013-03-12T13:40:51.270 回答