2012-07-13 72 views
2

我在我的應用程序中使用Facebook的API。它的工作正常,我可以登錄並張貼在牆上。但我無法刪除登錄信息。如何在Android的共享偏好設置中刪除保存的數據?

這是代碼

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牆上發佈消息。

我只想刪除保存的詳細信息,如果用戶請求在牆上發佈消息,則需要彈出登錄屏幕。

感謝您的幫助傢伙

+0

'prefs.edit()清()提交();' – 2012-07-13 12:09:58

+0

它不工作薩米爾 – GoCrazy 2012-07-13 12:35:31

回答

8

請參考以下鏈接

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

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

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

感謝您answer..Its在我的情況不工作 – GoCrazy 2012-07-13 12:42:04

0

這裏的問題是(IMO)你清楚憑證,它只會刪除您的令牌和日期格式SharePreferences。

但是,你不會取消你的facebook對象的會話,這就是爲什麼,現在你的Facebook在其字段變量中有令牌和日期,並且它能夠發佈該消息。

因爲

  • Facebook的對象被創建時,它會自動從SharedPreferences獲得這些 憑據。
  • 然後您刪除憑據
  • 但facebook對象具有憑據,也嘗試使其無效。

更新: 所以,當你已經廢止他們,總是發表任何活動的Facebook,像這樣前檢查會議:

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

你好感謝你的答案..我只是做了你說什麼,但它也是一樣..我編輯我的問題以及請參閱 – GoCrazy 2012-07-13 12:34:28

+0

請參閱更新的答案。 – 2012-07-13 12:41:40

+0

是的,我也檢查這種情況..條件滿意..它做的是它的加載登錄頁面幾秒鐘後,它顯示張貼在牆上.. – GoCrazy 2012-07-13 12:44:13

1

我已經在我的項目中使用它的工作完美。

Preferences = getSharedPreferences(「這裏是你的偏好名稱」,Context.MODE_PRIVATE);

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