本文转自:http://yaku2688.iteye.com/blog/1185348
SharedPreferences配置文件为XML文件,路径:/data/data/<package name>/shared_prefs目录下
关键代码:
- //第一个参数用于指定该文件的名称,第二个参数指定文件的操作模式,共有四种操作模式。
- //如果希望生成的xml文件能被其他应用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
- //另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。
- SharedPreferences perferences = getSharedPreferences("yaku", Context.MODE_PRIVATE);
- Editor edit = perferences.edit();//获得编辑器
- edit.putString("name", "我是内容");
- edit.putInt("age", 20);
- edit.commit();//提交内容
获取数据:
- SharedPreferences preference = getSharedPreferences("yaku", Context.MODE_PRIVATE);
- String nameStr = preference.getString("name", "");//如果取不到值就取值后面的参数
- int ageStr = preference.getInt("age", 0);
- //其他应用要访问上面应用的preference,首先需要创建上面应用的Context,然后通过Context 访问preference
- Context context = createPackageContext("cn.yaku.action", Context.CONTEXT_IGNORE_SECURITY);
- SharedPreferences perferences = context.getSharedPreferences("yaku", Context.MODE_WORLD_READABLE);
- String name = perferences.getString("name", "");
- int age = perferences.getInt("age", 0);
- //如果不通过创建Context访问其他应用的preference,也可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:
- File xmlFile = new File("/data/data/<package name>/shared_prefs/yaku.xml");
示例代码:
- package com.yaku.SharedPreferences;
- import com.yaku.test.R;
- import android.app.Activity;
- import android.content.Context;
- import android.content.SharedPreferences;
- import android.content.SharedPreferences.Editor;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
- /**
- * SharedPerferences的使用
- * @author Administrator
- */
- public class ShareActivity extends Activity {
- private EditText name;
- private EditText age;
- private Button sure;
- private Button recover;
- private Button clear;
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.sharedperference);
- name = (EditText)findViewById(R.id.name);
- age = (EditText)findViewById(R.id.age);
- sure = (Button)findViewById(R.id.sure);
- recover = (Button)findViewById(R.id.recover);
- clear = (Button)findViewById(R.id.clear);
- //保存信息到yaku.xml文件
- sure.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- String nameStr = name.getText().toString();
- String ageStr = age.getText().toString();
- if(!"".equals(nameStr)&&nameStr!=null && !"".equals(ageStr)&&ageStr!=null){
- SharedPreferences perferences = getSharedPreferences("yaku", Context.MODE_PRIVATE);
- Editor edit = perferences.edit();
- edit.putString("name", nameStr);
- edit.putInt("age", Integer.parseInt(ageStr));
- edit.commit();
- Toast.makeText(ShareActivity.this, "OK", 0).show();
- }
- }
- });
- //恢复保存的数据
- recover.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- SharedPreferences preference = getSharedPreferences("yaku", Context.MODE_PRIVATE);
- String nameStr = preference.getString("name", "");//如果取不到值就取值后面的参数
- int ageStr = preference.getInt("age", 0);
- name.setText(nameStr);
- age.setText(String.valueOf(ageStr));
- }
- });
- //清除数据
- clear.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- name.setText(null);
- age.setText(null);
- }
- });
- }
- }