1) AndroidMainifest.xml 文件,这里面包含了单元测试的内容,如有不懂可以参考前面几讲内容介绍
package="com.android.sharedprefrencesdemo"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="10"
android:targetSdkVersion="17" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.android.sharedprefrencesdemo.MainActivity"
android:label="@string/app_name" >
2) 程序的布局文件,只有一个读取的按钮,写入数据在MainActivity的onCreate()方法中写入。
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="34dp"
android:layout_marginTop="44dp"
android:text="取出" />
3) MySharedPrefrences.java 类,这个主要是用来实现sharedPreferences存储的方法
package com.android.sharedprefrencesdemo;
import java.util.HashMap;
import java.util.Map;
import android.content.Context;
import android.content.SharedPreferences;
/**
* 实现往共享参数中存储简单的用户名和密码
*
* @author AHuier
*/
public class MySharedPrefrences {
private Context context;
public MySharedPrefrences(Context context) {
this.context = context;
}
/**
* 查看 API文档 :getSharedPreferences (String name, int mode)方法 根据参数文件 'name'
* 检索和保存其内容,改方法会返回一个 SharedPreferences 对象,通过它可以检索和修改它的值, 注意任何调用相同 name
* 的都只返回一个SharedPreferences 的实例(单例模式),这就意味这它们会看到批次修改的内容。
* 参数:
* name : 所需的参数文件,如果 这个name 的对应的参数文件不存在,它就会被
* editor对象所创建(通过SharedPreferences.edit()方法获得), 然后提交修改
* (通过Editor.commit()方法).
* mode : 工作模式。使用 0 或者 MODE_PRIVATE 作为默认的操作,
* MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE 用来控制读写权限。 在多个进程维护同样的
* SharedPreferences 文件时会用到 MODE_MULTI_PROCESS。
* 注意 MODE_MULTI_PROCESS 一般是用在Android 2.3版本中或者更低版本,并且在最近的版本中它是被默认关闭的。
* 工作模式有以下四种:
* MODE_PRIVATE
* MODE_WORLD_READABLE
* MODE_WORLD_WRITEABLE
* MODE_MULTI_PROCESS
* Returns: 返回一个SharedPreferences 的单例用来检索和修改这个共享参数
*/
public boolean saveMessage(String name, String pswd) {
boolean flag = false;
SharedPreferences sharedPreferences = context.getSharedPreferences("userInfo",
Context.MODE_PRIVATE);
// 对数据进行编辑,返回的是一个Editor对象
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("name", name);
editor.putString("pswd", pswd);
flag = editor.commit(); //讲数据持久化到存储介质中,有可能是手机内置存储,有可能是SD卡。
return flag;
}
public Map getMessage(){
Map map = new HashMap();
SharedPreferences sharedPreferences = context.getSharedPreferences("userInfo", Context.MODE_PRIVATE);
//从共享参数 SharedPreferences 取出数据
String name = sharedPreferences.getString("name", ""); //如果取不到,默认值为空
String pswd = sharedPreferences.getString("pswd", ""); //如果取不到,默认值为空
//将数据put到HashMap中
map.put("name", name);
map.put("pswd", pswd);
return map;
}
}
4) MainActivity.java 类,
程序的主文件
package com.android.sharedprefrencesdemo;
import java.util.Map;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initComponent();
save();
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getMsInfo();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void initComponent() {
button = (Button) findViewById(R.id.button1);
}
public void save() {
// Context context = getContext();
MySharedPrefrences mySharedPrefrences = new MySharedPrefrences(MainActivity.this);
boolean flag = mySharedPrefrences.saveMessage("admin", "1423456");
Log.i(TAG, "----->>--" + flag);
}
public void getMsInfo() {
// Context context = getContext();
MySharedPrefrences mySharedPrefrences = new MySharedPrefrences(MainActivity.this);
Map map = mySharedPrefrences.getMessage();
Log.i(TAG, "---->> " + map.toString());
}
}
5) MyTest.java 单元测试类
package com.android.sharedprefrencesdemo;
import java.util.Map;
import android.content.Context;
import android.test.AndroidTestCase;
import android.util.Log;
public class MyTest extends AndroidTestCase {
private static final String TAG = "MyTest";
public MyTest() {
// TODO Auto-generated constructor stub
}
public void save() {
Context context = getContext();
MySharedPrefrences mySharedPrefrences = new MySharedPrefrences(context);
boolean flag = mySharedPrefrences.saveMessage("admin", "123456");
Log.i(TAG, "----->>--" + flag);
}
public void getMsInfo() {
Context context = getContext();
MySharedPrefrences mySharedPrefrences = new MySharedPrefrences(context);
Map map = mySharedPrefrences.getMessage();
Log.i(TAG, "---->> " + map.toString());
}
}