Preferenceをリセットする
開発中にPreferenceをリセットしたい時は、今まではアプリの再インストールしていました。
それでもめんどうなので、アプリにデバッグ用にPreferenceを削除する機能をつけたので書きます。
Preferenceはどうやって保存されてるの?
xmlで保存されています。
どこに?
Androidアプリのローカルデータ保存 〜Preference〜 - jitsu102の日記 http://d.hatena.ne.jp/jitsu102/20091117/1258466865 Preferenceで保存した値は、"/data/data/%Package Name%/shared_prefs"配下に、 "%Package Name%_preferences.xml"というファイル名で保存されます。
だそうです。
どうやってリセットするの?
削除すればいいと思います。
ほんとに?
たぶん・・・
注意
このxmlのファイルパスはgetDefaultSharedPreferencesやPreferenceActivityで保存されたPreferenceの格納先です。
名前を付けて保存した場合は、また別になると思われます。
ソース
Util.java
import android.content.Context; public class Util { /** * パッケージ名を返します * * @param context * @return */ public static String getPackageName(Context context) { return context.getPackageName(); } /** * Preferenceが格納されているディレクトリ名を返します * * @param context * @return */ public static String getPreferenceDirectory(Context context) { return "/data/data/" + getPackageName(context) + "/shared_prefs/"; } /** * DefaultSharedPreferenceのパスを返します * * @param context * @return */ public static String getDefaultSharedPreferencesPath(Context context) { return getPreferenceDirectory(context) + getPackageName(context) + "_preferences.xml"; } }
MainActivity.javaなど
public void onClick(View v) { String path = Util.getDefaultSharedPreferencesPath(context); File f = new File(path); if (f.exists()) { boolean result; result = f.delete(); if (result) { Toast.makeText(context, "Preferenceを削除しました", Toast.LENGTH_LONG).show(); } else { Toast.makeText(context, "Preferenceの削除に失敗しました", Toast.LENGTH_LONG).show(); } } else { Toast.makeText(context, "Preferenceがありません", Toast.LENGTH_LONG).show(); } }
さいごに
getPackageName()が2回呼ばれんじゃんとかツッコミはナシで(;-;)
2010-07-21 9時ごろ 追記
なんと
[twitter:@95kugo]さんが
Preferenceだったらぜんぶ消すぜ
ってコード書いてくださいました。
#1053382 - Pastie http://pastie.org/1053382
ステキです。
さらに
[twitter:@adakoda] さんが、よりスマートな方法を書いてくださいました。
[Android] プリファレンス(Preferences)をリセットする - adakoda http://www.adakoda.com/adakoda/2010/07/android-preferences.html
わたしもハードコーディングはダメだと思います。ごめんなさい。
2010-07-21 11時ごろ 追記
id:ytRinoさんがさらにステキなコード書いてくれました。
SharedPreferencesのリセット - ちりもつ http://d.hatena.ne.jp/ytRino/20100722/1279762434
Editorの方にクリアするメソッドがあるなんて気づきませんでした。
これが一番ですなー。