发生自动更新时,我的应用的偏好设置中的旧日期保存会被删除
如何阻止此删除?
我希望当我的应用程序自动更新时,它不会删除我保存的旧数据。
答案 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 {
....
}
....
}
我认为您需要检查以下内容:
您的设备是否为root设备? root设备上的应用可以删除他们想要的任何内容。
你在更新的apk中使用了不同的包名吗?