如何检查 SharedPreferences 是不是存在

Posted

技术标签:

【中文标题】如何检查 SharedPreferences 是不是存在【英文标题】:How to check if SharedPreferences exists or not如何检查 SharedPreferences 是否存在 【发布时间】:2014-05-14 07:34:45 【问题描述】:

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

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

          
          else

            

【问题讨论】:

您查看文档了吗?不是有contains方法吗? 方法不存在作为一种方式,我的想法也是不读取文件,我只是想知道是否有更简单的方法。 您想从文件中提取信息而不读取它? 我只是想知道是否有偏好,我不在乎值,如果存在我重定向到另一个布局, 【参考方案1】:

SharedPreferences 有一个contains(String key) 方法,可用于检查具有给定键的条目是否存在。

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

【讨论】:

非常感谢!对我帮助很大! 正是我需要的【参考方案2】:

嗯,可以这样做:

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

【讨论】:

【参考方案3】:

另一种解决方案:

如果您知道确切的偏好数量,您可以:

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

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

【讨论】:

【参考方案4】:

你可以试试这个

 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.

【讨论】:

【参考方案5】:

检查 SharedPreferences 键是否存在:

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

【讨论】:

以上是关于如何检查 SharedPreferences 是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sharedpreferences 中存储多个数据?

检查应用程序是不是首次运行[重复]

访问 SharedPreferences 是不是应该在 UI 线程外完成?

SharedPreferences.getInstance() 正在抛出 _CastError(空值检查运算符用于空值)

是否可以将数组或对象添加到 Android 上的 SharedPreferences

带有 SharedPreferences 的 Android 服务 setInexactRepeating asyncTask 问题