很多时候我们开发的软件需要向用户提供软件参数设置功能,Android应用,我们最适合采用什么方式保存软件配置参数呢?在Android平台上,提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,使用简易的键值对存储。文件存放在/data/data/
下面我们给点代码,说下简单的使用:
//文件命名为demo,私有模式 SharedPreferences sharedPreferences = getSharedPreferences("demo", Context.MODE_PRIVATE); Editor editor = sharedPreferences.edit();//获取编辑器 editor.putString("name", "hello"); editor.putInt("age", 6); editor.commit();//提交修改这样,我们就把信息存储到了 /data/data/
getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,最好定义为一个静态字符串,另外,名称如上面所示,不用带后缀名,后缀名会由系统自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式,这四种模式想必大家都有一定的了解。这里简单说一下:
MODE_APPEND File creation mode: for use with openFileOutput(String, int), if the file already exists then write data to the end of the existing file instead of erasing it.如果文件已经存在,在文件内容后面添加。
MODE_PRIVATE File creation mode: the default mode, where the created file can only be accessed by the calling application (or all applications sharing the same user ID). 设置为默认模式,在创建的文件只能该应用能够使用(或所有的应用程序共享同一个用户标识号)。 MODE_WORLD_READABLE File creation mode: allow all other applications to have read access to the created file.允许其他应用读该应用创建的文件。
MODE_WORLD_WRITEABLE File creation mode: allow all other applications to have write access to the created file. 允许其他应用写该应用创建的文件。所以,如果你希望SharedPreferences背后使用的xml文件能被其他应用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。
如果我们的模式设置为Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限,我们其他的应用是可以访问的,下面是其他应用访问的代码(假如上面代码的包名为cn.test.demo):
try{ Context context = createPackageContext("cn.test.demo", Context.CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e)
{ e.printStackTrace();}