最初使用共享首选项。
function getDefaultComputedStyles(el)
{
var temp = document.createElement("div");
document.body.appendChild(temp);
var defaultStyles = getComputedStyle(temp);
var extraStyles = getComputedStyle(el);
var foundStyles = [];
for(var i=0; i<defaultStyles.length; i++)
{
var extraStyleIndex = extraStyles[i];
var extraStyleValue = extraStyles.getPropertyValue(extraStyles[i]);
if(defaultStyles.getPropertyValue(defaultStyles[i]) !== extraStyleValue)
{
foundStyles.push(JSON.parse(`{"${extraStyleIndex}":"${extraStyleValue}"}`));
}
}
foundStyles.getPropertyValue = function(ind){
var result = this.filter(el => (`${ind}` in el));
return result[0]!=undefined ? result[0][Object.keys(result[0])] : null;
}
return foundStyles;
}
备份数据
BackupManager bm = new BackupManager(getApplicationContext());
SharedPreferences sharedPreferences = getSharedPreferences("AppData", MODE_PRIVATE);
if(sharedPreferences.getBoolean("my_first_time", true)) {
sharedPreferences.edit().putBoolean("my_first_time", false).apply();
sharedPreferences.edit().putString("user_id", String.valueOf(dbh.insertUserId())).apply();
sharedPreferences.edit().putInt("noteIndex", -1).apply();
sharedPreferences.edit().putInt("checklistIndex", -1).apply();
bm.dataChanged();
}
我的目标是备份整个sharedpreferences文件'AppData',并在重新安装该功能未能完成其任务后将其还原。我已经在清单中的true和false上用allowbackup尝试了它,并在我的实际设备上运行它来测试它,但是似乎没有任何相应的工作。
添加到AndroidManifest.xml中的项目以尝试解决此问题
public class MyPrfsBackupAgent extends BackupAgentHelper {
@Override
public void onCreate() {
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, "AppData");
addHelper("sharedprefs_key", helper);
}
}
我关注了有关此文档以及其他stackoverflow参考的文档,但是没有一个文档可以帮助我解决问题。我愿意尝试一种不同的备份/还原方式,但找不到其他方式,也不会使用autoBackup,因为它的目标是sdk 23,而我的最小值是21。
答案 0 :(得分:-1)
所有共享首选项数据都存储在名为shared_prefs的文件夹中的getFilesDir()。getParentFile()目录中的共享首选项.xml文件中。
只需将所有文件复制到您想要的任何位置。
在重新安装时,执行相反的操作并重新启动。