在前面的博客中分别介绍了使用内部存储,和外部存储存储用户名和密码,这篇博客将介绍一种新的储存用户名和密码的方式,使用SharedPreferences储存用户名和密码,SharedPreferences是直接处理xml文件,不需要做字符串分割,存储效率会前两种方式高
程序代码如下:
package com.fyt.sharedpreferencesdemo;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText et_username;
private EditText et_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_username = (EditText)findViewById(R.id.et_username);
et_password = (EditText)findViewById(R.id.et_password);
//读取保存在本地的用户名和密码
readAccount();
}
//读取保存在本地的用户名和密码
public void readAccount() {
//创建SharedPreferences对象
SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
//获得保存在SharedPredPreferences中的用户名和密码
String username = sp.getString("username", "");
String password = sp.getString("password", "");
//在用户名和密码的输入框中显示用户名和密码
et_username.setText(username);
et_password.setText(password);
}
//登录
public void login(View v) {
//获得用户输入的用户名和密码
String username = et_username.getText().toString();
String password = et_password.getText().toString();
//获得布局上的复选框控件
CheckBox cb = (CheckBox)findViewById(R.id.cb);
//如果勾选了复选框
if(cb.isChecked()) {
//创建sharedPreference对象,info表示文件名,MODE_PRIVATE表示访问权限为私有的
SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
//获得sp的编辑器
SharedPreferences.Editor ed = sp.edit();
//以键值对的显示将用户名和密码保存到sp中
ed.putString("username", username);
ed.putString("password", password);
//提交用户名和密码
ed.commit();
}
//创建并显示吐司对话框
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
}
}
运行效果:
使用SharedPreferences将用户名和密码保存在本地后,可以在\data\data\+包名+\shared_prefs目录下找到一个info.xml文件
打开info.xml后可以看到info.xml是一个xml文件,保存了用户登录时的用户名和密码