Shared Preferences(三)

来源:互联网 发布:流程图描述算法 编辑:程序博客网 时间:2024/05/29 19:30

getPreferences() - 如果你的Activity仅仅需要一个preferences文件可以使用这个方法。因为你的Activity只要一个preferences文件。 怎样往SharedPreferences中写数据呢?

1、需要获取SharedPreferences的编辑对象即:SharedPreferences.Editor : 使用 edit()。 比如:SharedPreferences.Editor editor = sp1.edit();

2、使用putXXX()方法,向preferences写入数据: 比如:editor.putXXX(“key” , value);

3、preferences文件中提交数据: 比如:editor.commit(); 如何读取数据呢? getXXX()等方法读取。

比如: boolean silent = settings.getBoolean("silentMode", false);

 下面是Google doc提供的一个demo:

public class Calc extends Activity {

public static final String PREFS_NAME = "MyPrefsFile";

@Override

protected void onCreate(Bundle state){

super.onCreate(state); . . . // Restore preferences

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

boolean silent = settings.getBoolean("silentMode", false);

setSilent(silent);

}

@Override

protected void onStop(){

super.onStop(); // We need an Editor object to make preference changes.

// All objects are from android.context.Context

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit();

 editor.putBoolean("silentMode", mSilentMode); // Commit the edits! editor.commit();

 }

}

接下来看Google doc 中关于sharedpreferences的文档。

SharedPreferences 本身是一个接口,用来获取和修改程序的配置数据,位于:android.content.SharedPreferences。程序无法直接创建SharedPreferences实例,只能通过conext的getSharedPreferences(String, int)的获取接口实例。

注意:当前类不支持跨进程调用,将会在之后的版本中支持。 它提供了如下方法来访问perferences数据: boolean contains(String key) :判断当前preferences是否包含key所对应的数据。 abstract SharedPreferences.Editor edit():为preferences创建一个新的Editor,因此你可以修改preferences的数据并且提交给SharedPreferences对象。 abstract Map<String, ?> getAll() :获取preferences中所包含的所有数据。 abstract XXX getXXX(String key, boolean defValue):获取perferences里指定的key对应的value。如果该key不存在,则返回默认defValue .其中XXX是基础数据类型:boolean、float、int、long、String等。 SharedPreferences接口本身并没有提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即可获取它所对应的Editor对象。 Editor提供了如下方法来写向perferences入数据: abstract SharedPreferences.Editor clear() 在Editor中标记出:清除所有preferences保存的数据。(注意此方法并没有实质性的清除,只是在Editor上进行了标记,需要commit后才可以进行真正的清除) abstract boolean commit(): 将Editor对preferences的修改提交给SharedPreferences对象,完成对preferences中数据的修改。 abstract SharedPreferences.Editor putXXX(String key, boolean value) 向preferences中存入key及其所对应的数据 <key-value>。其中xxx可以是boolean、float、int、long、String等各种基本类型的数值。 abstract SharedPreferences.Editor remove(String key): 在Editor中标记出preference中以key以键的键值对应该被移除,而实际的移除动作将会在commit()执行之后才会作用于真正的preferences。 如何读取其它应用的SharedPreferences: 如上所述,如果想读、写其它应用的SharedPreferences,前提是创建该SharedPreferences的应用程序指定相应的访问权限,例如指定了MODE_WORLD_READABLE , 这表明该SharedPreferences可被其它应用程序读取。指定了MODE_WORLD_WRITEABLE,这表明该SharedPreferences可被其它程序写入。 为了读取其它程序对应的Context,可按照如下步骤进行:

1、需要创建其它程序对应的Context,例如如下代码:

Context userCount = createPackageContext(“com.sharedpreferencesdemo.zhanggeng” , Context.CONTEXT_IGNORE_SECURITY);

上面的程序中:com.sharedpreferencesdemo.zhanggeng 就是其他程序的包名——实际上Android系统就是用应用程序的报名来作为程序的标识的。

2、调用其它程序的conext的getSharedPreferences(String name , int mode) 即可获取相应的SharedPreferences对象。

3、调用SharedPreferences的edit()方法获取相应的Editor即可。

 

 

0 0
原创粉丝点击