android:SharedPreferences
2011-06-03 11:07:13| 分类: 默认分类 | 标签: |字号大中小 订阅
在android当中,SharedPreferences是一种轻量级数据存储,以键值对形式操作。
SharedPreferences文件保存在/data/data/<packagename>/shared_prefs目录下,即一个xml文件。
支持3种访问模式
●MODE_PRIVATE 私有、新内容覆盖原内容
●MODE_APPEND 新内容追加到原内容
●MODE_WORLD_READABLE 全局读、允许其他应用程序读取
●MODE_WORLD_WRITEABLE 全局写、允许其他应用程序写入,会覆盖原数据 这点没验证通过,其他程序不能修改,只能读
定义SharedPreferences
SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME,MODE); //PREFERENCE_NAME与Android系统中保存的文件名相同
If a preferences file by this name does not exist, it will be created when you retrieve an editor (SharedPreferences.edit()) and then commit changes (Editor.commit()). 第一次调用该函数并不会立即在系统创建xml文件,当获取editor并commit时,xml创建。
SharedPreferences修改
editor.putString("Name","Tom");
editor.putInt("Age",20);
editor.putFloat("Height",);
editor.commit(); //调用Commit()函数保存修改内容
获取SharedPreferences内容
SharedPreferences sharedPreferences=getSharedPreferences(PREFERENCE_NAME,MODE);//通过getSaredPerences取SharedPreferences
String name=sharedPreferences.getString("Name","Default Name"); //第二个参数为无法获取时的缺省值
int age=sharedPreferences.getInt("Age",20);
float height=sharedPreferences.getFloat("Height",);
访问其他应用程序的SharedPreferences需要的3个条件:
●访问模式为全局读或全局写
●需要知道共享者的包名和SharedPreferences名称,通过Context获取对象
●需要知道每个数据的名称和数据类型以读取数据
try{
c=this.createPackageContext(PREFERENCE_PACKAGE,Context.CONTXT_IGNORE_SECURITY);
}catch(NameNotFoundException e){
e.printStackTrace();
}
SharedPreferences sharedPreferences=c.getSharedPreferences(PREFERENCE_NAME,MODE);
- getPreferences():获取到作用域是本Activity的preference
- getSharedPreferences():获取到作用域是本应用程序的preference
- getDefaultSharedPreferences():获取到全局作用域的preference
以下示例让SharedPreferences保存用户选择的值: