1. 程式人生 > >android簡單功能之——用sharedPreferences實現記住使用者名稱和密碼

android簡單功能之——用sharedPreferences實現記住使用者名稱和密碼

1.關於sharedPreferences:

    SharedPreferences是Android系統中提供的一種使用鍵值對形式儲存資料的方式,特點是使用簡單方便,缺點是由於功能簡單,儲存的資料形式有限,只能用作簡單的資料儲存。

由於SharedPreferences是一個介面,而且在這個接口裡沒有提供寫入資料和讀取資料的能力。但它是通過其Editor介面中的一些方法來操作SharedPreference的,用法見下面程式碼:

Context.getSharedPreferences(String name,int mode)來得到一個SharedPreferences例項

name:是指檔名稱,不需要加字尾.xml,系統會自動為我們新增上。

mode:是指定讀寫方式,其值有三種,分別為:

Context.MODE_PRIVATE:指定該SharedPreferences資料只能被本應用程式讀、寫

Context.MODE_WORLD_READABLE:指定該SharedPreferences資料能被其他應用程式讀,但不能寫

Context.MODE_WORLD_WRITEABLE:指定該SharedPreferences資料能被其他應用程式讀寫。


2.使用方法:

  1. 直接宣告一個SharedPreferences物件
  2. 使用getSharedPreferences();方法獲取例項
  3. 使用SharedPreferences中的edit方法進行資料的編輯、新增、刪除和儲存。

3.使用時要注意的問題:

SharedPreferences物件本身只能讀取,而不能編輯、刪除和儲存,要操作資料必須使用edit方法。使用edit方法操作資料之後一定要使用Preferences中的edito.commit();方法提交,才能成功操作。SharedPreferences使用鍵值對的方式儲存資料,因此無法操作過於複雜的資料。小Demo程式碼實現:
public class Login extends Activity {
static String YES = "yes";
static String NO = "no";
private CheckBox checkBox1;
private Button login;
private EditText edtuser, edtpsd;
static String name, password;
private String isMemory = "";//isMemory變數用來判斷SharedPreferences有沒有資料,包括上面的YES和NO
private String FILE = "saveUserNamePwd";//用於儲存SharedPreferences的檔案
private SharedPreferences sp = null;//宣告一個SharedPreferences
 
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
login = (Button) findViewById(R.id.login);
edtuser = (EditText) findViewById(R.id.edtuser);
edtpsd = (EditText) findViewById(R.id.edtpsd);
checkBox1 = (CheckBox) findViewById(R.id.checkbox1);
sp = getSharedPreferences(FILE, MODE_PRIVATE);
isMemory = sp.getString("isMemory", NO);
//進入介面時,這個if用來判斷SharedPreferences裡面name和password有沒有資料,有的話則直接打在EditText上面
if (isMemory.equals(YES)) {
name = sp.getString("name", "");
password = sp.getString("password", "");
edtuser.setText(name);
edtpsd.setText(password);
}
Editor editor = sp.edit();
editor.putString(name, edtuser.toString());
editor.putString(password, edtpsd.toString());
editor.commit();
//觸擊登入按鈕,執行remenber方法文字框裡的資訊重新寫入SharedPreferences裡面覆蓋之前的,去除掉勾選框,觸擊登入按鈕執行remenber方法就將之前儲存到SharedPreferences的資料清除了
login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
name = edtuser.getText().toString();
password = edtpsd.getText().toString();
remenber();
Intent it=new Intent(Login.this, Message.class);//跳轉
startActivity(it);
}
});
}
// remenber方法用於判斷是否記住密碼,checkBox1選中時,提取出EditText裡面的內容,放到SharedPreferences裡面的name和password中
public void remenber() {
if (checkBox1.isChecked()) {
if (sp == null) {
sp = getSharedPreferences(FILE, MODE_PRIVATE);
}
Editor edit = sp.edit();
edit.putString("name", edtuser.getText().toString());
edit.putString("password", edtpsd.getText().toString());
edit.putString("isMemory", YES);
edit.commit();
} else if (!checkBox1.isChecked()) {
if (sp == null) {
sp = getSharedPreferences(FILE, MODE_PRIVATE);
}
Editor edit = sp.edit();
edit.putString("isMemory", NO);
edit.commit();
}
}