本文轉自: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);
- }
- });
- }
- }