您的位置:首页 > 移动开发 > Android开发

Android登录用户名记住密码——偏好设置(SharedPreferences)

2016-11-23 19:52 399 查看

SharedPreferences:偏好设置

偏好设置指的是“个性化设置”,即同一个软件,不同的使用者,设置的结果是不一样的,例如某音乐播放器中的“是否在WIFI情况下下载歌词”、某游戏中的“是否打开背景音乐”、“是否打开间效”,某新闻APP中的“默认字体大小”……

一.使用偏好设置的数据的特征是:

数据量小

存在可描述的K-V关系

数据在应用程序中私有,不需要共享给其它应用

随时可能需要保存或读取

二.使用偏好设置存储数据:

调用Context的
getSharedPreferences(String name, int mode)
方法获取SharedPreferences对象,其中,第1个参数表示保存偏好设置的文件的文件名,不需要指定扩展名,保存时会自动添加.xml作为扩展名,第2个参数固定取值
Context.MODE_PRIVATE


调用SharedPreferences对象的
edit()
方法,获取SharedPreferences.Editor对象

调用SharedPreferences.Editor对象的
put???(String key, ??? value)
方法写入数据

调用SharedPreferences.Editor对象的
commit()
方法提交写入

使用偏好设置保存的数据固定会存储在 /data/data/应用程序的package/shared_prefs/ 文件夹下,如果文件夹不存在,系统会自动创建!

在系统的 设置(Settings) -> 应用程序(Apps) 找到存储了偏好设置的应用,选择 清除数据(Clear Data) 将会把所有偏好设置数据、私有文件、数据库、登录的帐号清除掉!

三.读取偏好设置中的数据:

调用Context的
getSharedPreferences(String name, int mode)
方法获取SharedPreferences对象,过程可参考保存数据

调用SharedPreferences对象的
get???(String key, ??? defValue)
方法读取数据

注意:在偏好设置中读取数据时,可以将偏好设置视为“是不可靠的”,因为首次运行时可能没有保存过数据,则读不到数据,或者用户在使用软件的过程中,随时可能清除数据,也将读不到数据!

四.登录记住用户名与密码

public class MainActivity extends Activity {
// 声明控件
private Button btLog;
private EditText etUserName;
private EditText etPassWord;
// 声明变量
private SharedPreferences preferences;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 控件初始化
btLog=(Button)findViewById(R.id.button1);
etUserName=(EditText)findViewById(R.id.editText1);
etPassWord=(EditText)findViewById(R.id.editText2);

//获取到偏好设置对象:第一个参数是表名,第二个参数是权限
preferences=this.getSharedPreferences("login",this.MODE_PRIVATE);

//获取到偏好设置里面存的用户名和密码数据
String name=preferences.getString("name", "");
String pass=preferences.getString("pass", "");

//往两个输入框里面放我们存储的数据
etUserName.setText(name);
etPassWord.setText(pass);

//设置登录按钮的点击事件:把输入的数据存入偏好设置
btLog.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
//将数据保存到偏好设置里面
//1.获取到偏好设置的一个编辑的对象
Editor ed=preferences.edit();
//2.编辑器.putString;放字符串
//2.1.获取输入框的内容
String username=etUserName.getText().toString().trim();
String password=etPassWord.getText().toString().trim();
//2.2.放入我们的数据
ed.putString("name",username);
ed.putString("pass",password);
//3.提交
ed.commit();
Toast.makeText(getApplicationContext(),"保存成功",Toast.LENGTH_SHORT).show();
}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据 android