2011-05-10 80 views
63

我有一個應用程序,我必須在其中實施「登錄」活動。我有這些組件:如何在android中使用getSharedPreferences

  1. EditText上的用戶名
  2. 的EditText密碼
  3. 按鈕登錄
  4. 按鈕取消

我想我的應用程序記住用戶一旦用戶的登錄信息已登錄,直到用戶按下「註銷」按鈕。我沒有在我的xml中使用首選項。

如何獲取getSharedPreferences(String name,int mode)在我的應用程序中工作?

回答

119

首先使用

SharedPreferences userDetails = context.getSharedPreferences("userdetails", MODE_PRIVATE); 

現在保存在SharedPreferences值獲得SharedPreferences實例

Editor edit = userDetails.edit(); 
edit.putString("username", username.getText().toString().trim()); 
edit.putString("password", password.getText().toString().trim()); 
edit.apply(); 

以上線路將編寫的用戶名和密碼才能偏好

我們檢索保存的偏好值,您可以按照以下代碼行

String userName = userDetails.getString("username", ""); 
String password = userDetails.getString("password", ""); 

(注意:不建議在應用程序中保存密碼。您應該加密密碼,然後保存或跳過保存密碼)

+1

嗯..我有另一個闕stion ..我如何恢復偏好? – CMA 2011-05-10 13:31:27

+8

我編輯了我的回答 – Dharmendra 2011-05-10 13:45:09

+0

非常感謝!你真的幫了很大忙! (: – CMA 2011-05-10 14:02:25

12
//Set Preference 
SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
SharedPreferences.Editor prefsEditor; 
prefsEditor = myPrefs.edit(); 
//strVersionName->Any value to be stored 
prefsEditor.putString("STOREDVALUE", strVersionName); 
prefsEditor.commit(); 

//Get Preferenece 
SharedPreferences myPrefs;  
myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
String StoredValue=myPrefs.getString("STOREDVALUE", ""); 

試試這個..

+8

MODE_WORLD_READABLE不是存儲敏感數據的正確選擇,它也在API級別17中被棄用。 – 2013-03-04 22:41:17

+0

http://stackoverflow.com/questions/35328936/why-is-this-value-null – 2016-02-11 01:11:17

+0

MODE_WORLD_READABLE目前已棄用! – Jorgesys 2016-04-03 02:10:19

1

讀了很多周圍後,只有這個工作: 在課堂上設置共享偏好:

SharedPreferences userDetails = getApplicationContext().getSharedPreferences("test", MODE_PRIVATE); 
        SharedPreferences.Editor edit = userDetails.edit(); 
        edit.clear(); 
        edit.putString("test1", "1"); 
        edit.putString("test2", "2"); 
        edit.commit(); 

在AlarmReciever:

SharedPreferences userDetails = context.getSharedPreferences("test", Context.MODE_PRIVATE); 
    String test1 = userDetails.getString("test1", ""); 
    String test2 = userDetails.getString("test2", ""); 
相關問題