实现SharedPreferencesBackupHelper的正确方法是什么?

时间:2019-09-30 00:16:59

标签: android sharedpreferences android-backup-service

最初使用共享首选项。

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。

1 个答案:

答案 0 :(得分:-1)

所有共享首选项数据都存储在名为shared_prefs的文件夹中的getFilesDir()。getParentFile()目录中的共享首选项.xml文件中。

只需将所有文件复制到您想要的任何位置。

在重新安装时,执行相反的操作并重新启动。