赞
踩
SharedPreferences简介
为了保存软件的设置参数,Android平台为我们提供了一个SharedPreferences接口,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下。
一.获取到应用中的SharedPreferences的两种方式
getSharedPreferences()
如果需要多个通过名称参数来区分的shared preference文件, 名称可以通过第一个参数来指定。可在app中通过任何一个Context 执行该方法。
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
mode指定为MODE_PRIVATE,则该配置文件只能被自己的应用程序访问。
mode指定为MODE_WORLD_READABLE,则该配置文件除了自己访问外还可以被其它应该程序读取。
mode指定为MODE_WORLD_WRITEABLE,则该配置文件除了自己访问外还可以被其它应该程序读取和写入
这个方法默认使用当前类不带包名的类名作为文件的名称,同时也和上面一样传入文件读写的模式。
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
二.读写SharedPreferences
为了写shared preferences文件,需要通过执行edit()创建一个 SharedPreferences.Editor。
通过类似putInt()与putString()等方法传递keys与values,接着通过commit() 提交改变.
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();
为了从shared preference中读取数据,可以通过类似于 getInt() 及 getString()等方法来读取。在那些方法里面传递我们想要获取的value对应的key,并提供一个默认的value作为查找的key不存在时函数的返回值。如下:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), default);
三.系统默认的SharedPreferences
每个应用有一个默认的偏好文件preferences.xml,使用getDefaultSharedPreferences获取,其余操作是一样的。
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("if_set_location", false);
editor.commit();
四.访问其他应用的SharedPreferences
如果应用B要读写访问A应用中的Preference前提条件,A应用中该preference创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE权限,代表其他的应用能访问读取或者写入。
具体步骤:
1.在B中创建一个指向A应用的Context
Context otherAppsContext = createPackageContext("A应用的包名", Context.CONTEXT_IGNORE_SECURITY);
2.再通过context获取到SharedPreferences实体:
SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("SharedPreferences的文件 名", Context.MODE_WORLD_READABLE);
String name = sharedPreferences.getString("key", "");
注:如果不通过创建Context访问其他应用的preference,也可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:
File xmlFile = new File(“/data/data/<package name>/shared_prefs/itcast.xml”);
//<package name>应替换成应用的包名。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。