3

Android アプリで sharedpreferences ファイルのバックアップを取得しようとしてきましたが、今のところ機能していません。開発者ガイドの簡単な Google コードを使用しています。MyPrefsBackup以下は、クラス のコードです。

public class MyPrefsBackup extends BackupAgentHelper {

    // The name of the SharedPreferences file

    static final String PREFS = "UserDB";

    // A key to uniquely identify the set of backup data

    static final String PREFS_BACKUP_KEY = "prefs";

    // Allocate a helper and add it to the backup agent

  public  void onCreate() {

        SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS);
        addHelper(PREFS_BACKUP_KEY, helper);


    }

PREFS_BACKUP_KEY実際には、データを保存した特定のキーでなければならないことにようやく気付いたと思います。「設定」を使用しただけなので、データがバックアップされていなかったのだと思います。ただし、ファイルにかなりの量のデータを保存しているため、個々のキーをすべて指定せずにファイルSharedPreferences全体を保存するにはどうすればよいですか。SharedPreferences(一部のキーはアプリによって生成されるため、ユーザーがデータを入力するまで、それらが使用されているかどうかさえわかりません)。

BackupHelperクラスにファイル全体をバックアップするように指示する方法はありSharedPreferencesますか?

4

4 に答える 4

0

渡すキーは、内で使用するキーaddHelper ではありませんSharedPreferences。これは、追加するすべてのヘルパーからこの特定のヘルパーを識別するキーです。あなたがそれについて話す各ファイルのすべてのSharedPreferencesBackupHelper値をバックアップします。SharedPreferences

SharedPreferencesバックアップされていない場合は、別の理由があります。SharedPreferencesファイルの名前が正しいこと、および<meta-data>AndroidManifest.xmlのタグでキーが正しく指定されていることを確認してください。

于 2013-03-21T16:44:29.240 に答える
0

共有設定ファイルのバックアップを取得するのは簡単でした。よりよく理解するために、以下の例を見つけてください。

SharedPreferences sharedPref = getSharedPreferences("EmpDetails", MODE_PRIVATE);
Editor prefEditor = sharedPref.edit();
prefEditor.putString("empName1", "valuelabs");
prefEditor.putString("empName2", "webmd");
prefEditor.commit();

したがって、共有設定ファイルのバックアップを取得する場合は、以下のロジックを使用する必要があります。値が必要な場合は、キーに基づいてアクセスできます。

public class MyPrefsBackup extends BackupAgentHelper {

    // The name of the SharedPreferences file
    static final String PREFS = "EmpDetails";
   // A key to uniquely identify the set of backup data
    static final String PREFS_BACKUP_KEY = "PREF";

  public  void onCreate() {

        SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS);
        addHelper(PREFS_BACKUP_KEY, helper)

    }
}
于 2014-08-26T07:18:03.940 に答える