如何检查SharedPreferences是否存在

时间:2014-04-02 19:34:02

标签: android sharedpreferences

我以这种方式检查文件是否存在,但我需要超越,我需要知道具体是否有一个,有什么办法吗?

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

          }
          else{

          }  

4 个答案:

答案 0 :(得分:78)

SharedPreferencescontains(String key)方法,可用于检查是否存在具有给定密钥的条目。

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

答案 1 :(得分:20)

嗯,有人可以这样做:

    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();
    }  

答案 2 :(得分:1)

另一种解决方案:

如果你知道你拥有的确切数量的偏好,你可以:

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

这是有效的,因为存储在/data/data/myApp/shared_prefs/myApp_prefrences.xml中的首选项文件仅在其值已设置时才包含首选项的值对。

答案 3 :(得分:0)

您可以尝试

 fun checkLoginInfo(): Boolean{
    val saveLogin = sharedPreferences.getBoolean(SAVE_LOGIN, false)
    return saveLogin
}

 Checks whether the preferences contains a preference. 
 @param(SAVE_LOGIN) key The name of the preference to check.
 @param(false) default
 @return Returns true if the preference exists in the preferences, otherwise false.