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);