SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此它保存的数据主要是简单类型的key-value对。
SharedPreferences接口主要负责读取应用程序的SharedPreferences数据。
SharedPreferences接口本身并没用提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即可获取它所对应的Editor对象。
SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name,int mode)方法来获取
SharedPreferences实例。
packagecn.class3g.activity;
importandroid.app.Activity;
importandroid.content.Context;
importandroid.content.SharedPreferences;
importandroid.content.SharedPreferences.Editor;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
publicclass SharedPreferencesTestActivity extends Activity implements
OnClickListener {
Button saveBtn, readBtn;
EditText nameEt, ageEt;
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
}
private void findViews() {
nameEt = (EditText)this.findViewById(R.id.nameEt);
ageEt = (EditText)this.findViewById(R.id.ageEt);
saveBtn = (Button)this.findViewById(R.id.saveBtn);
readBtn = (Button)this.findViewById(R.id.readBtn);
saveBtn.setOnClickListener(this);
readBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String name = "无名氏";
int age = -1;
SharedPreferences shared =this.getSharedPreferences("info",
Context.MODE_WORLD_READABLE); //+ Context.MODE_WORLD_WRITEABLE
switch (v.getId()) {
case R.id.saveBtn:
name =nameEt.getText().toString().trim();
age =Integer.valueOf(ageEt.getText().toString().trim());
Editor editor =shared.edit();
editor.putString("name",name);
editor.putInt("age",age);
// 保证操作的事务完整性
editor.commit();
break;
case R.id.readBtn:
name = shared.getString("name","无名氏");
age =shared.getInt("age", -1);
Toast.makeText(this,"name="+name+ " age="+age, Toast.LENGTH_LONG).show();
break;
}
}
}
读取其他应用的SharedPreferences
packagecn.class3g.readother;
importandroid.app.Activity;
importandroid.content.Context;
importandroid.content.SharedPreferences;
importandroid.content.SharedPreferences.Editor;
importandroid.content.pm.PackageManager.NameNotFoundException;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.Toast;
publicclass ReadOtherSharedPreferencesActivity extends Activity implements
OnClickListener {
Button readBtn;
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
}
private void findViews() {
readBtn = (Button)this.findViewById(R.id.readOther);
readBtn.setOnClickListener(this);
}
public void onClick(View v) {
if (v.getId() == R.id.readOther) {
try {
Context otherContext= this.createPackageContext(
"cn.class3g.activity",Context.CONTEXT_IGNORE_SECURITY);
SharedPreferencesshared = otherContext.getSharedPreferences(
"info",MODE_PRIVATE);
String res = "name="+ shared.getString("name", "wms")+
"age="+ String.valueOf(shared.getInt("age", -1));
Toast.makeText(this,res, Toast.LENGTH_LONG).show();
// Editor editor =shared.edit();
// editor.putString("other","我写你了!!");
} catch(NameNotFoundException e) {
e.printStackTrace();
}
}
}
}