如何删除android中共享首选项中保存的数据?

时间:2012-07-13 12:07:13

标签: android facebook sharedpreferences

我在我的应用中使用facebook api。它的工作正常我可以登录并发布在墙上。但我无法删除登录信息。

这是代码

   public boolean saveCredentials(Facebook facebook) {
        Editor editor = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
        editor.putString(TOKEN, facebook.getAccessToken());
        editor.putLong(EXPIRES, facebook.getAccessExpires());
        return editor.commit();
    }

    public boolean restoreCredentials(Facebook facebook) {
        SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);
        facebook.setAccessToken(sharedPreferences.getString(TOKEN, null));
        facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0));
        return facebook.isSessionValid();
    }

    public boolean removeCredentials()
    {
        SharedPreferences prefs = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);

            facebook.setAccessToken(prefs.getString("", null));
        facebook.setAccessExpires(prefs.getLong("", 0));
        Editor editor = prefs.edit(); 
        editor.clear();
        editor.commit(); 
        return true; 
    }

通过调用removeCredentials()方法未删除共享首选项详细信息。它只是在Facebook墙上发布消息。

我只想删除保存的详细信息,如果用户再次要求在墙上发布消息,则需要弹出登录屏幕。

感谢您的帮助人员

3 个答案:

答案 0 :(得分:10)

请参阅以下链接

https://stackoverflow.com/a/3687333/1441666

SharedPreferences.Editor.remove() followed by a commit()

SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();

答案 1 :(得分:1)

我在我的项目中使用过它完美的工作..

Preferences = getSharedPreferences("这是您的首选项名称",Context.MODE_PRIVATE);

  1. editor = preferences.edit();
  2. editor.clear();
  3. editor.commit();

答案 2 :(得分:0)

此处的问题是(IMO)您清除SharedPreferences的凭据,该凭据仅删除您的令牌和日期格式SharePreferences。

但是你不会使facebook对象的会话无效,这就是为什么,现在你的facebook在其字段变量中有Token和Date,并且能够发布该消息。

由于

  • 创建facebook对象时,会自动获取这些对象 来自SharedPreferences的凭据。
  • 然后删除凭据
  • 但facebook对象有凭据,也试图使它们无效。

<强>更新 因此,当您将它们取消后,请在将任何活动发布到Facebook之前检查会话,如下所示:

facebook.isSessionValid(); //checks if the session valid