当前位置:   article > 正文

SharedPreference使用

sharedpreference

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);
  • 1
  • 2

mode指定为MODE_PRIVATE,则该配置文件只能被自己的应用程序访问。
mode指定为MODE_WORLD_READABLE,则该配置文件除了自己访问外还可以被其它应该程序读取。
mode指定为MODE_WORLD_WRITEABLE,则该配置文件除了自己访问外还可以被其它应该程序读取和写入

  • getPreferences()

这个方法默认使用当前类不带包名的类名作为文件的名称,同时也和上面一样传入文件读写的模式。

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
  • 1

二.读写SharedPreferences

  • 写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();
  • 1
  • 2
  • 3
  • 4
  • 读SharedPreferences

为了从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);
  • 1
  • 2
  • 3

三.系统默认的SharedPreferences
每个应用有一个默认的偏好文件preferences.xml,使用getDefaultSharedPreferences获取,其余操作是一样的。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("if_set_location", false);
editor.commit();
  • 1
  • 2
  • 3
  • 4

四.访问其他应用的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);
  • 1

2.再通过context获取到SharedPreferences实体:

SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("SharedPreferences的文件    名", Context.MODE_WORLD_READABLE);
String name = sharedPreferences.getString("key", "");
  • 1
  • 2

注:如果不通过创建Context访问其他应用的preference,也可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:

File xmlFile = new File(“/data/data/<package name>/shared_prefs/itcast.xml”);
//<package name>应替换成应用的包名。
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/思考机器/article/detail/60781?site
推荐阅读
相关标签
  

闽ICP备14008679号