首页 > 其他分享 >SharedPreferences

SharedPreferences

时间:2023-08-11 17:07:42浏览次数:85  
标签:SharedPreferences Editor key import android public



SharedPreferences简介

在Android开发过程中,有时候我们需要保存一些简单的软件配置等简单数据的信息,而如果我们直接用数据库存储的话又不太方便,在这里我们就可以用到SharedPreferences,SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此保存的数据主要是简单类型的键值对(key-value),它保存的是一个XML文件。

SharedPreferences常用的属性和方法

方法名称

描述

public abstract boolean contains (String key)

判断SharedPreferences是否包含特定key的数据

public abstract SharedPreferences.Editor edit ()

返回一个Edit对象用于操作SharedPreferences

public abstract Map<String, ?> getAll ()

获取SharedPreferences数据里全部的key-value对

getXXX(String key,XXX defvlaue)

获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值

由于SharedPreference是一个接口,而且在这个接口里并没有提供写入数据和读取数据的能力。但是在其内部有一个Editor内部的接口,Edit这个接口有一系列的方法用于操作SharedPreference。

Editor接口的常用方法

方法名称

描述

public abstract SharedPreferences.Editor clear ()

清空SharedPreferences里所有的数据

public abstract boolean commit ()

当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改

public abstract SharedPreferences.Editor putXXX (String key, boolean XXX)

向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值

public abstract SharedPreferences.Editor remove (String key)

删除SharedPreferences里指定key对应的数据项

 

SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,可以通过Context.getSharedPreferences(String name.int mode)来得到一个SharedPreferences实例

name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package name>/shared_prefs下(这个面试常问到)

mode:是指定读写方式,其值有三种,分别为:

Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写

Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。

实例:用SharedPreferences进行简单的操作



1. package com.jiahui.preferences;  
2.   
3. import android.app.Activity;  
4. import android.content.SharedPreferences;  
5. import android.os.Bundle;  
6. import android.view.View;  
7. import android.widget.Button;  
8. import android.widget.EditText;  
9.   
10. public class SharedPreferencesDemoActivity extends Activity {  
11.   
12. private SharedPreferences sharedPreferences;  
13.   
14. private SharedPreferences.Editor editor;  
15.   
16. public void onCreate(Bundle savedInstanceState) {  
17. super.onCreate(savedInstanceState);  
18.         setContentView(R.layout.main);  
19.   
20. this.getSharedPreferences("test",MODE_WORLD_READABLE);  
21.         editor = sharedPreferences.edit();  
22.   
23. final EditText edtName = (EditText) this.findViewById(R.id.edtName);  
24. final EditText edtAge = (EditText) this.findViewById(R.id.edtAge);  
25.   
26. this.findViewById(R.id.btnRead);  
27. this.findViewById(R.id.btnWrite);  
28.   
29. new View.OnClickListener() {  
30.   
31. @Override  
32. public void onClick(View v) {  
33. // 如果没有这个key就以默认值  
34. "name", null);  
35. int age = sharedPreferences.getInt("age", 0);  
36.                 edtAge.setText(String.valueOf(age));  
37.                 edtName.setText(name);  
38.             }  
39.         });  
40.   
41. new View.OnClickListener() {  
42.   
43. @Override  
44. public void onClick(View v) {  
45.                 String name = edtName.getText().toString();  
46. int age = Integer.parseInt(edtAge.getText().toString());  
47. "age", age);  
48. "name", name);  
49.   
50. // 一定要提交  
51.                 editor.commit();  
52.   
53.             }  
54.         });  
55.   
56.     }  
57. }



实现效果:

 

用File Explorer可以查看在data/data/com.jiahui.preferences/shared_prefs/下多了一个XML文件

 

将XML文件导出我们可以看到在这个XML文件里存储了以下内容:



1. <?xml version='1.0' encoding='utf-8' standalone='yes' ?>  
2. <map>  
3. <int name="age" value="20" />  
4. <string name="name">jiahui</string>  
5. </map>



读写其他应用SharedPreferences

在有时的开发过程中,我们可能要访问其他的应用程序的SharedPreferences,要实现这样的功能,我们必须要保证要访问的那个应用程序的SharedPreferences的访问权限要是MODE_WORLD_READABLE,这表明该SharedPreferences可以被其他应用程序读取,如果指定的MODE_WORLD_WRITEABLE表明该SharedPreferences可以被其他应用程序读取写入其实现思路如下

1、  获得其他应用程序对应的Context

2、  通过这个Context得到这个应用程序的SharedPreferences,然后再利用这个SharedPreferences读取内容

以上一例的SharedPreference为例。实现代码:




    1. package com.jiahui.preferences2;  
    2.   
    3. import android.app.Activity;  
    4. import android.content.Context;  
    5. import android.content.SharedPreferences;  
    6. import android.content.pm.PackageManager.NameNotFoundException;  
    7. import android.os.Bundle;  
    8. import android.view.View;  
    9. import android.widget.Button;  
    10. import android.widget.EditText;  
    11.   
    12. public class SharedPreferencesDemo02Activity extends Activity {  
    13.   
    14. private Button btnRead;  
    15. private EditText edtResult;  
    16.     Context otherContext;  
    17.   
    18. public void onCreate(Bundle savedInstanceState) {  
    19. super.onCreate(savedInstanceState);  
    20.         setContentView(R.layout.main);  
    21.   
    22. try {  
    23. // 获取其他应用程序的Context  
    24. "com.jiahui.preferences",  
    25.                     CONTEXT_IGNORE_SECURITY);  
    26. catch (NameNotFoundException e) {  
    27.             e.printStackTrace();  
    28.         }  
    29.   
    30. this.findViewById(R.id.edtResult);  
    31.   
    32. this.findViewById(R.id.btnRead);  
    33. new View.OnClickListener() {  
    34.   
    35. @Override  
    36. public void onClick(View v) {  
    37. // 获取其他应用程序的SharedPreferences  
    38.                 SharedPreferences preferences = otherContext  
    39. "test",  
    40.                                 Context.MODE_WORLD_READABLE);  
    41.   
    42. "name", null);  
    43. int age = preferences.getInt("age", 0);  
    44. "访问的结果为:姓名:" + name + "年龄:" + age);  
    45.   
    46.             }  
    47.         });  
    48.   
    49.     }  
    50. }



     实现效果:

    SharedPreferences的注意事项:

    编辑完SharedPreferences一定要记得调用Editor的commit()方法,否则不会将数据写入到文件里的。

    回顾总结:

    1、  如何得到SharedPreferences

    SharedPreferences preferences=getPreferences(“test”,MODE_PRIVATE);

    2、  如何编辑SharedPreferences

    得到Editor对象实例

    SharedPreferences.Editor editor=preferences.editor();

    3、  SharedPreferences的存储位置

    /data/data/<package name>/shared_prefs

     

     

     

    from :  




    SharedPreferences简介


    在Android开发过程中,有时候我们需要保存一些简单的软件配置等简单数据的信息,而如果我们直接用数据库存储的话又不太方便,在这里我们就可以用到SharedPreferences,SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此保存的数据主要是简单类型的键值对(key-value),它保存的是一个XML文件。

    SharedPreferences常用的属性和方法

    方法名称

    描述

    public abstract boolean contains (String key)

    判断SharedPreferences是否包含特定key的数据

    public abstract SharedPreferences.Editor edit ()

    返回一个Edit对象用于操作SharedPreferences

    public abstract Map<String, ?> getAll ()

    获取SharedPreferences数据里全部的key-value对

    getXXX(String key,XXX defvlaue)

    获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值

    由于SharedPreference是一个接口,而且在这个接口里并没有提供写入数据和读取数据的能力。但是在其内部有一个Editor内部的接口,Edit这个接口有一系列的方法用于操作SharedPreference。

    Editor接口的常用方法

    方法名称

    描述

    public abstract SharedPreferences.Editor clear ()

    清空SharedPreferences里所有的数据

    public abstract boolean commit ()

    当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改

    public abstract SharedPreferences.Editor putXXX (String key, boolean XXX)

    向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值

    public abstract SharedPreferences.Editor remove (String key)

    删除SharedPreferences里指定key对应的数据项

     

    SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,可以通过Context.getSharedPreferences(String name.int mode)来得到一个SharedPreferences实例

    name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package name>/shared_prefs下(这个面试常问到)

    mode:是指定读写方式,其值有三种,分别为:

    Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

    Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写

    Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。

    实例:用SharedPreferences进行简单的操作



      1. package com.jiahui.preferences;  
      2.   
      3. import android.app.Activity;  
      4. import android.content.SharedPreferences;  
      5. import android.os.Bundle;  
      6. import android.view.View;  
      7. import android.widget.Button;  
      8. import android.widget.EditText;  
      9.   
      10. public class SharedPreferencesDemoActivity extends Activity {  
      11.   
      12. private SharedPreferences sharedPreferences;  
      13.   
      14. private SharedPreferences.Editor editor;  
      15.   
      16. public void onCreate(Bundle savedInstanceState) {  
      17. super.onCreate(savedInstanceState);  
      18.         setContentView(R.layout.main);  
      19.   
      20. this.getSharedPreferences("test",MODE_WORLD_READABLE);  
      21.         editor = sharedPreferences.edit();  
      22.   
      23. final EditText edtName = (EditText) this.findViewById(R.id.edtName);  
      24. final EditText edtAge = (EditText) this.findViewById(R.id.edtAge);  
      25.   
      26. this.findViewById(R.id.btnRead);  
      27. this.findViewById(R.id.btnWrite);  
      28.   
      29. new View.OnClickListener() {  
      30.   
      31. @Override  
      32. public void onClick(View v) {  
      33. // 如果没有这个key就以默认值  
      34. "name", null);  
      35. int age = sharedPreferences.getInt("age", 0);  
      36.                 edtAge.setText(String.valueOf(age));  
      37.                 edtName.setText(name);  
      38.             }  
      39.         });  
      40.   
      41. new View.OnClickListener() {  
      42.   
      43. @Override  
      44. public void onClick(View v) {  
      45.                 String name = edtName.getText().toString();  
      46. int age = Integer.parseInt(edtAge.getText().toString());  
      47. "age", age);  
      48. "name", name);  
      49.   
      50. // 一定要提交  
      51.                 editor.commit();  
      52.   
      53.             }  
      54.         });  
      55.   
      56.     }  
      57. }



      实现效果:

       

      用File Explorer可以查看在data/data/com.jiahui.preferences/shared_prefs/下多了一个XML文件

       

      将XML文件导出我们可以看到在这个XML文件里存储了以下内容:


      1. <?xml version='1.0' encoding='utf-8' standalone='yes' ?>  
      2. <map>  
      3. <int name="age" value="20" />  
      4. <string name="name">jiahui</string>  
      5. </map>



      读写其他应用SharedPreferences

      在有时的开发过程中,我们可能要访问其他的应用程序的SharedPreferences,要实现这样的功能,我们必须要保证要访问的那个应用程序的SharedPreferences的访问权限要是MODE_WORLD_READABLE,这表明该SharedPreferences可以被其他应用程序读取,如果指定的MODE_WORLD_WRITEABLE表明该SharedPreferences可以被其他应用程序读取写入其实现思路如下

      1、  获得其他应用程序对应的Context

      2、  通过这个Context得到这个应用程序的SharedPreferences,然后再利用这个SharedPreferences读取内容

      以上一例的SharedPreference为例。实现代码:



        1. package com.jiahui.preferences2;  
        2.   
        3. import android.app.Activity;  
        4. import android.content.Context;  
        5. import android.content.SharedPreferences;  
        6. import android.content.pm.PackageManager.NameNotFoundException;  
        7. import android.os.Bundle;  
        8. import android.view.View;  
        9. import android.widget.Button;  
        10. import android.widget.EditText;  
        11.   
        12. public class SharedPreferencesDemo02Activity extends Activity {  
        13.   
        14. private Button btnRead;  
        15. private EditText edtResult;  
        16.     Context otherContext;  
        17.   
        18. public void onCreate(Bundle savedInstanceState) {  
        19. super.onCreate(savedInstanceState);  
        20.         setContentView(R.layout.main);  
        21.   
        22. try {  
        23. // 获取其他应用程序的Context  
        24. "com.jiahui.preferences",  
        25.                     CONTEXT_IGNORE_SECURITY);  
        26. catch (NameNotFoundException e) {  
        27.             e.printStackTrace();  
        28.         }  
        29.   
        30. this.findViewById(R.id.edtResult);  
        31.   
        32. this.findViewById(R.id.btnRead);  
        33. new View.OnClickListener() {  
        34.   
        35. @Override  
        36. public void onClick(View v) {  
        37. // 获取其他应用程序的SharedPreferences  
        38.                 SharedPreferences preferences = otherContext  
        39. "test",  
        40.                                 Context.MODE_WORLD_READABLE);  
        41.   
        42. "name", null);  
        43. int age = preferences.getInt("age", 0);  
        44. "访问的结果为:姓名:" + name + "年龄:" + age);  
        45.   
        46.             }  
        47.         });  
        48.   
        49.     }  
        50. }



         实现效果:

        SharedPreferences的注意事项:

        编辑完SharedPreferences一定要记得调用Editor的commit()方法,否则不会将数据写入到文件里的。

        回顾总结:

        1、  如何得到SharedPreferences

        SharedPreferences preferences=getPreferences(“test”,MODE_PRIVATE);

        2、  如何编辑SharedPreferences

        得到Editor对象实例

        SharedPreferences.Editor editor=preferences.editor();

        3、  SharedPreferences的存储位置

        /data/data/<package name>/shared_prefs

         

         

         


        标签:SharedPreferences,Editor,key,import,android,public
        From: https://blog.51cto.com/u_2198048/7049387

        相关文章

        • SharedPreferences存储数据
          适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口令密码等  核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。通过DDMS的F......
        • 一统天下 flutter - 存储: shared_preferences - 用于操作 android 的 SharedPreferen
          源码https://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-存储:shared_preferences-用于操作android的SharedPreferences,ios的NSUserDefaults,web的LocalStorage示例如下:lib\storage\shared_preferences.dart/**shared_preferences......
        • 两种保存状态的方法getSharedPreferences和onSaveInstanceState
          虽然这些东西很简单有时候还真的让你搞混@OverrideprotectedvoidonPause(){super.onPause();SharedPreferencesprefs=getSharedPreferences("X",MODE_PRIVATE);Editoreditor=prefs.edit();editor.putString("lastAct......
        • SQLiteOpenHelper&SharedPreferences练习
          目录结构:packagecom.dc.app;importjava.text.DecimalFormat;importjava.util.Locale;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.app.Dialog;importandroid.app.Notification;importandroid.app.Notificati......
        • 安卓 存储---SharedPreferences
          导包importandroid.content.SharedPreferences;importandroid.content.SharedPreferences.Editor;存储数据//创建应用级首选项SharedPreferencessharedPreferences=ge......
        • Android 集合数据在Sharedpreferences中的增删改查
          Android集合数据在Sharedpreferences中的增删改查Sharedpreferences作为一个轻量化的Android本地存储方式相信很多人都为其不能存集合而烦恼所以呢,我封了两个简易的方法希......
        • 【android】Android SharedPreferences使用详解
          【参考连接】AndroidSharedPreferences使用详解androidSharedPreferences实现用户的注册和保存账号密码......
        • Android 初代 K-V 存储框架 SharedPreferences,旧时代的余晖?
          本文已收录到 AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。前言大家好,我是小彭。SharedPreferences是Android平台上轻量级的K-V存储框架,亦是初代......
        • SharedPreferences使用
          其他代码同,QQ登录<spanstyle="font-size:14px;">packagecom.itheima28.qqlogin.utils;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStr......
        • 【android】Android基础知识之SharedPreferences知识点总结
          1.SharedPreferences简介  Sharedpreferences是Android平台上一个轻量级的存储类,可以用于保存应用程序的各种配置信息,如应用设置里面的各种开关、是否打开音效、是否使......