一. 相关的方法
1.获得SharedPreferences的对象
① Context对象的getSharedPreferences()方法
- 第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。
- 第二个参数指定文件的操作模式,共有四种操作模式。
1
| public SharedPreferences getSharedPreferences(String name, int mode)
|
② Activity对象的getPreferences()方法
1
| public SharedPreferences getPreferences(@Context.PreferencesMode int mode)
|
③ 两者的区别
- 调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享。
- 调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用。
④ 文件的操作模式
- Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容。
- Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
- Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
- MODE_WORLD_READABLE:表示当前文件可以被其他应用读取。
- MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
2.获取一个Editor对象,用于编辑操作
1
| SharedPreferences.Editor edit = sharedPreferences.edit();
|
3.添加数据
- 第一个参数是 key,用来获取对应值的标志。
- 第二个参数是 value,是真正存储的数据。
1 2 3 4 5 6 7 8 9 10 11
| Editor putString(String key, @Nullable String value); Editor putStringSet(String key, @Nullable Set<String> values); Editor putInt(String key, int value); Editor putLong(String key, long value); Editor putFloat(String key, float value); Editor putBoolean(String key, boolean value);
boolean commit(); void apply();
|
4.获取数据
1 2 3 4 5 6 7 8 9 10
| String getString(String key, @Nullable String defValue); Set<String> getStringSet(String key, @Nullable Set<String> defValues); int getInt(String key, int defValue); long getLong(String key, long defValue); float getFloat(String key, float defValue); boolean getBoolean(String key, boolean defValue);
Map<String, ?> getAll();
|
5.其他方法
1 2 3 4 5 6 7 8
| boolean contains(String key);
Editor remove(String key);
Editor clear();
|
二.简单的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| private final String SHARE_NAME = "PictureUnlock"; private final String PASSWORD_KEY = "password";
SharedPreferences sharedPreferences = getSharedPreferences(SHARE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString(PASSWORD_KEY, "123456");
edit.apply();
String password = sharedPreferences.getString(PASSWORD_KEY, null);
|
内部实现的方式其实还是文件(Xml文件),我们可以查看具体的位置:data/data/ 代码包 /shared_prefs/设置的文件名.xml。


参考文章
SharedPreferences详解
SharedPreferences