0%

Android信息记录

信息记录

主要是应对处理记住密码,程序配置的这种操作,有点像Windows下的ini文件,但是这个对应的是XML。

SharedPreferences类

这个类操作起来比较的简单,无非就是获取编辑器然后写。读就是直接读。
这个对象不是new的,而是通过方法获得的。

1
2
3
4
5
private SharedPreferences prf;
prf = getSharedPreferences("config", MODE_PRIVATE);//第一个参数是文件名,第二个参数是文件的权限(MODE_PRIVATE,私有的),MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE这个就是其他APP也可以用的
Editor edit = prf.edit();
edit.putString("Name", "Wker");
edit.commit();//提交内存信息

这个样子我们就存储了我们的内容,权限的话呢就是对应的rw那三个。
读取的话呢也是比较简单的:

1
prf.getString("Name1", "ppp")

第二个参数是个默认值,就和我们在读ini一样,也需要一个默认值,就是这个节点不存在的话呢,所返回的值。

实例记住密码

首先我们先布局:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<EditText
android:id="@+id/Ed1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/Ed2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<CheckBox
android:id="@+id/Cb_rember"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住密码"
/>
<Button
android:onClick="onClick"
android:id="@+id/Bt_Login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录"
android:layout_gravity="center_horizontal"
/>

</LinearLayout>

android:onClick="onClick"这个属性节点,主要是告诉编译器,我们这个按钮控件的一个点击事件,我直接放在名为:onClick这个方法里面,这个名字可以自己改。

首先我们先是初始化控件和记录对象:

1
2
3
4
5
6
7
8
9
10
11
private EditText ed_1;
private EditText ed_2;
private CheckBox cb_rem;
private SharedPreferences prf;
/*
......
*/
prf = getSharedPreferences("config", MODE_PRIVATE);
ed_1 = (EditText) findViewById(R.id.Ed1);
ed_2 = (EditText) findViewById(R.id.Ed2);
cb_rem = (CheckBox) findViewById(R.id.Cb_rember);

然后我们处理点击事件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void onClick(View view)
{
Editor edit = prf.edit();
if(cb_rem.isChecked())
{
edit.putString("username", ed_1.getText().toString()).putString("password", ed_2.getText().toString());
edit.putBoolean("rember", true);
}else
{
edit.remove("username").remove("password");
edit.putBoolean("rember", false);
}
edit.commit();
Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
}

可以看出就是通过checkbox是否选中,来选择是不是记住密码,不是的话呢就remove,最后提交。

然后在我们onCreate执行的时候我们判断一下就好了。

1
2
3
4
5
6
if(prf.getBoolean("rember", false))
{
ed_1.setText(prf.getString("username", ""));
ed_2.setText(prf.getString("password", ""));
cb_rem.setChecked(true);
}