web-dev-qa-db-ja.com

SharedPreferencesが存在するかどうかを確認する方法

この方法でファイルが存在するかどうかを確認していますが、さらに先へ進む必要があります。特定のファイルがあるかどうかを知る必要があります。何か方法はありますか?

File f = new File("/data/data/com.eventrid.scanner/shared_prefs/Eventrid.xml");
          if (f.exists()){

          }
          else{

          }  
41
Nico1991

SharedPreferencesにはcontains(String key)メソッドがあり、これを使用して、指定されたキーを持つエントリが存在するかどうかを確認できます。

http://developer.Android.com/reference/Android/content/SharedPreferences.html

80
Yjay

さて、次のことができます:

    SharedPreferences sharedPrefs = getSharedPreferences("sp_name", MODE_PRIVATE);
    SharedPreferences.Editor ed;
    if(!sharedPrefs.contains("initialized")){
        ed = sharedPrefs.edit();

        //Indicate that the default shared prefs have been set
        ed.putBoolean("initialized", true);

        //Set some default shared pref
        ed.putString("myDefString", "wowsaBowsa");

        ed.commit();
    }  
21
Chris Sprague

別の解決策:

設定の正確な数がわかっている場合は、次のことができます。

public void isPreferencesSet(Context context){
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    return (sharedPreferences.getAll().size() == exactNumberOfPreferences);
}

これは、/ data/data/myApp/shared_prefs/myApp_prefrences.xmlに保存されている設定ファイルに値が設定されている場合にのみ、設定の値のペアが含まれているため機能します。