元ネタは、以下のサイトから。
Preferenceをリセットする - 明日の鍵
http://d.hatena.ne.jp/tomorrowkey/20100721/1279700859
プリファレンスを使用するアプリケーションを作成していると、テスト用に、プリファレンスデータをリセットしたくなります。
実際、ワタクシも、毎回アプリケーションをアンインストールしていた人です。。。
そこで、プリファレンスをリセット(というより削除)するには、上記エントリのようにすれば、目的を達成できます。
ありがたいですね。
で、自分でもプリファレンスデータをリセットする方法を考えてみました。
ちょっと真面目すぎるコードですが、"/data/data"~"/shared_prefs/"の部分をハードコードしてない点がポイントです。
プリファレンスをリセット(削除のみ)するソースコード(※1)
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
Map<String, ?> keys = sharedPreferences.getAll();
if (keys.size() > 0) {
for (String key : keys.keySet()) {
editor.remove(key);
}
editor.commit();
}
あと、プリファレンスがデフォルト値を持っていない場合には、これでも良いのですが、
デフォルト値を持っている場合には、続けて、明示的にデフォルト値を作成してあげる必要があります。
※ちなみに、デフォルト値を書き出したかどうかは、/data/data/パッケージ名/shared_prefs/_has_set_default_values.xml の _has_set_default_values キー値に保存されています
明示的にデフォルト値を書き出すソースコード
PreferenceManager.setDefaultValues(this, R.xml.preference, true);
お題が与えられて一緒に考えるのは楽しいし、勉強になりますね。
※1:2010年7月22日追記
SharedPreferences.Editor#clear()→commit() で簡単に削除できるようです^^;
