使用SharedPreferences进行数据存储

 

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的 QQ ,用户可以设置是否允许陌生 人添加自己为好友。对于软件配置参数的保存,如果是 window 软件通常我们会采用 ini 文件进行保存,如果是 j2se 应用,我们会采用 properties 属性文件或者 xml 进行保存。如果是 Android 应用,我们最适合采用什么方式 保存软件配置参数呢? Android 平台给我们提供了一个 SharedPreferences 类,它是一个轻量级的存储类,特 别适合用于保存软件配置参数。使用 SharedPreferences 保存数据,其背后是用 xml 文件存放数据,文件存放 /data/data/<package name>/shared_prefs 目录下:
SharedPreferences sharedPreferences = getSharedPreferences("itcast", Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();//获取编辑器
editor.putString("name", "传智播客");
editor.putInt("age", 4);
editor.commit();//提交修改
  生成的itcast.xml文件内容如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name">传智播客</string>
<int name="age" value="4" />
</map>
 
因为 SharedPreferences 背后是使用 xml 文件保存数据, getSharedPreferences(name,mode) 方法的第一个参数用于指定该文件的名 称,名称不用带后缀,后缀会由 Android 自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式,这四种模式 前面介绍使用文件方式保存数据时已经讲解过。如果希望 SharedPreferences 背后使用的 xml 文件能被其他应用读和写,可以指 Context.MODE_WORLD_READABLE Context.MODE_WORLD_WRITEABLE 权限。
另外 Activity 还提供了另一个 getPreferences(mode) 方法操作 SharedPreferences ,这个方法默认使用当前类不带包名的类名作为文 件的名称。
 
l
SharedPreferences sharedPreferences = getSharedPreferences("itcast", Context.MODE_PRIVATE);
//getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 1);
 
l
getSharedPreferences("itcast", Context.MODE_WORLD_READABLE);
 
l
Context otherAppsContext = createPackageContext("cn.itcast.action", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("itcast", Context.MODE_WORLD_READABLE);
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 0);

 
如果不通过创建Context访问其他应用的preference,可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:
File xmlFile = new File(“/data/data/<packagename>/shared_prefs/itcast.xml”);//<package name>
6

你可能感兴趣的:(xml,android,qq,J2SE,Security)