如何检查SharedPreferences是否存在

61

我用这种方式检查文件是否存在,但我需要更进一步,我需要知道是否有特定的文件,有没有办法?

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

          }
          else{

          }  

1
你有查看文档吗?难道没有一个“包含”方法吗? - keyser
该方法并不存在,我的想法也不能读取文件,我只是想知道是否有更简单的方法。 - Nico1991
你想在不读取文件的情况下提取信息吗? - keyser
1
我只想知道是否有一个偏好设置,我不关心它的值,如果存在的话,我会重定向到另一个布局。 - Nico1991
这种检查方法仍然有用,如果需要知道是否曾经创建过给定名称的首选项文件(在本例中为Eventrid)。我确实有一个有效的使用场景,这很重要。谢谢您发布这个。 - gregko
5个回答

114

1
非常感谢!这帮了我很多! - Nico1991
正是我所需要的。 - Arshad

32

好的,可以这样做:

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

1

另一种解决方案:

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

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

这是因为偏好设置文件存储在 /data/data/myApp/shared_prefs/myApp_prefrences.xml 中,只包含已设置值的偏好设置键值对。

1

检查SharedPreferences键是否存在:

    SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
    if(mPrefs.getAll().containsKey("KeyName")){

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.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接