在android中SharedPreferences作为轻量级数据数据是非常方便的,把一个应用程序或是一个Activity的数据存放在SharedPreferences文件中,以便下次进入程序的时候读取出来,呈现给用户或者用作其他的处理。另外,SharedPreferences也可以保存控件的状态,并且为保存的状态改变而指定监听事件,在android系统设置中就大量地用了这种方式。好了,现在来简介一下SharedPreferences的用法;
首先,SharedPreferences是android.content包下的一个接口,该接口中包含了两个子接口一个是Editor,另外一个是OnSharedPreferenceChangeListener。看到名字,就知道这两个接口的含义,Editor接口主要是负责将数据从Preference文件中存储和读取的,而OnSharedPreferenceChangeListener接口是负责监听Preference文件存储状态是否改变,如果改变了可以在自己定义响应的操作。
怎样在程序中获取SharedPreferences的对象呢?从SDK上可以得知,用Context.getSharedPreferences(String,int)可以获取其对象,这里String类型代表的参数是存储文件的名字,而int型参数代表的含义是读写这个存储文件的权限。名字没什么好说的,就是一字符串。而权限的话,有以下几种:
Context.MODE_APPEND;值为32768;该模式会检查文件是否存在,存在就追加内容,不存在就创建文件,并且写入数据。
Context.MODE_PRIVATE;值为0;默认模式,私有,只能被本应用访问。
Context.MODE_WORLD_READABLE;值为1;其他应用可读。
Context.MODE_WORLD_WRITEABLE;值为 2;其他应用可写。
如果想其他应用也能访问该文件并且可以读写的话,可以指定为Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE的模式
第一:获取本应用的preferences文件
SharedPreferences pre =this.getSharedPreferences("FileName", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
pre.edit().putString("Name","张三").commit();
Log.v("yourActivity","Name = " + pre.getString("Name", "nothing") );
第二:获取其他应用的preferences文件
要想获取其他程序的preferences文件,首先要获取它的上下文context对象,比如要去访问包名为dxd.android.test的apk的preferences文件,可以这样来的到它context;
Context otherContext = createPackageContext(“dxd.android.test”,Context.CONTEXT_IGNORE_SECURITY);
只要得到了这个context,接下来的事情就跟在同一个包中一样了。