SharePreferences

SharedPreferences


基本用法:
1)存数据:
//第一个参数是文件名,不需要加.xml后缀,如果文件不存在,系统会自动生成。
//文件路径为:/data/data/<packagename>/shared_prefs/xxx.xml

SharedPreferences sp = getSharedPreferences("loginsetting", MODE_PRIVATE);
String name = sp.getString("name", "");
String password = sp.getString("pwd", "");

2)取数据

SharedPreferences sp = getSharedPreferences("loginsetting", MODE_PRIVATE);
String name = sp.getString("name", "");
String password = sp.getString("pwd", "");

其他:
//getPreferences(mode)与getSharedPreferences(String filename,mode)
//区别在于getPreferences只有一个参数,不能指定文件名,文件名固定为
//当前Activity的名字,不包含包名。

SharedPreferences sp = getPreferences(MODE_PRIVATE); 
Editor editor = sp.edit(); 
editor.putFloat("money", 100000.0f); 
editor.commit();

//通过PreferenceManager.getDefaultSharedPreferences(Context),获取到
的SharedPreferences MODE默认为MODE_PRIVATE,而且生成文件名为
<包名>_preferences.xml

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
Editor editor = sp.edit(); 
editor.putFloat("money", 100000.0f); 
editor.commit();

------------------三个mode

MODE_PRIVATE 私有的,不允许其他程序访问该xml文件。
MODE_WORLD_READABLE 其他程序可以读取
MODE_WORLD_WRITABLE 其他程序可以写

这里其他程序如何访问呢?
有两种方式:
第一种,在第二个程序中通过File:

File f = new File("/data/data/包名/shared_prefs/xxx.xml"); 
FileInputStream fis = new FileInputStream(f);//在被访问程序中,MODE_WORLD_READABLE 
FileOutputStream fos = new FileOutputStream(f);//在被访问程序中,MODE_WORLD_WRITABLE

第二种,通过被访问程序的Context对象。

Context otherContext = createPackageContext( 
"com.anjoyo.sharedpreference", CONTEXT_IGNORE_SECURITY);

第一个参数为要创建context的包名,第二个参数为创建时忽略安全问题。

SharedPreferences sp = otherContext.getSharedPreferences 
("loginsetting", MODE_WORLD_READABLE); 
String name = sp.getString("name", ""); 
String pwd = sp.getString("pwd", "");

SharedPreference可以保存多个数据


sp = PreferenceManager.getDefaultSharedPreferences(this);

存:

SharedPreferences.Editor editor = sp.edit();
Set<String> set = new HashSet<String>();
set.add("java");
set.add("C++");
set.add("c");
editor.putStringSet("books", set);
editor.commit();

取:

Set<String> books = sp.getStringSet("books", null);
posted on 2013-01-05 10:05  @与非  阅读(3560)  评论(0编辑  收藏  举报