`

Android数据存储之SharedPreferences

阅读更多
从网上资料整理的SharedPreferences应用,记录一下

SharedPreferences是以键值对来存储应用程序的配置信息的一种方式,,它只能存储基本数据类型,类似j2se应用中采用的properties文件。一个程序的配置文件仅可以在本应用程序中使用,或者说只能在同一个包内使用,不能在不同的包之间使用。 实际上SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data/<package name>/shares_prefs下。

SharedPreferences对象的两个方法:

1.Context.getSharedPreferences(String name,int mode)
name为本组件的配置文件名(如果想要与本应用程序的其他组件共享此配置文件,可以用这个名字来检索到这个配置文件),名称不用带后缀,后缀会由Android自动加上。

mode为操作模式,默认的模式为0或MODE_PRIVATE,如果希望SharedPreferences背后使用的xml文件能被其他应用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。

2.Activity.getPreferences(int mode)
配置文件仅可以被调用的Activity使用,这个方法默认使用当前类不带包名的类名作为文件的名称。

mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。


如果要读取配置文件信息,只需要直接使用SharedPreferences对象的getXXX()方法即可,而如果要写入配置信息,则必须先调用SharedPreferences对象的edit()方法,使其处于可编辑状态,然后再调用putXXX()方法写入配置信息,最后调用commit()方法提交更改后的配置文件。

以下是示例代码:

import android.app.Activity; 

import android.content.SharedPreferences; 

public class Calc extends Activity { 

public static final String PREFS_NAME = "MyPrefsFile"; 

. . . 

@Override 

protected void onCreate(Bundle state){ 

super.onCreate(state); 

. . . 

//载入配置文件 

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 

//或者使用 SharedPreferences settings = getPreferences(0); 
//getBoolean()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
boolean silent = settings.getBoolean("silentMode", false); 

setSilent(silent); 

} 

@Override 

protected void onStop(){ 

super.onStop(); 

//写入配置文件。可以使用SharedPreferences.Editor来辅助解决。 

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
//获取编辑器
SharedPreferences.Editor editor = settings.edit(); 

editor.putBoolean("silentMode", mSilentMode); 

editor.commit(); //一定要记得提交 

//或者再简单化一可以这样写 

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 

setting.edit().putBoolean(“silentMode”,mSilentMode).commit(); 

} 

}
 


如果访问其他应用中的Preference,前提条件是:该preference创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE权限。如:有个<package name>为cn.itcast.action的应用使用下面语句创建了preference。
getSharedPreferences("itcast", Context.MODE_WORLD_READABLE);
其他应用要访问上面应用的preference,首先需要创建上面应用的Context,然后通过Context 访问preference ,访问preference时会在应用所在包下的shared_prefs目录找到preference :

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/<package name>/shared_prefs/itcast.xml”);//<package name>应替换成应用的包名
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics