Android之探索SharedPreferences数据存储的背后

前言:

最近一直在学习ios的数据存储,当学习到NSUserDefaults的时候让我回想起了SharedPreferences,今天闲来无事,想着总结一下SharedPreferences的使用。

什么是SharedPreferences存储?

SharedPreferences是基础key-value(键值对)来存储一些轻量数据的存储方式,特别适用于保存软件配置参数。使用SharedPreferences 保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs。

具体是怎么使用的?

写入数据

       SharedPreferences sharedPreferences= getSharedPreferences("test",
                Activity.MODE_PRIVATE);
        //实例化SharedPreferences.Editor对象
        SharedPreferences.Editor editor = sharedPreferences.edit();
        //用putString的方法保存数据
        editor.putBoolean(USER_ISLOGIN,true);
        editor.putString(USER_ID, "123456");
        editor.putString(USER_PWD, "pwd123");
        //提交当前数据
        editor.apply();

读取数据

SharedPreferences sharedPreferences= getSharedPreferences("test",
                Activity.MODE_PRIVATE);
        String userId=sharedPreferences.getString(USER_ID,"");
        String userPwd=sharedPreferences.getString(USER_PWD,"");
        boolean isLogin=sharedPreferences.getBoolean(USER_ISLOGIN,false);

        Log.e("","userId---->"+userId);
        Log.e("","userPwd---->"+userPwd);
        Log.e("","isLogin---->"+isLogin);

重点介绍下

SharedPreferences sharedPreferences= getSharedPreferences("test",
                Activity.MODE_PRIVATE);

第一个参数是生成xxx.xml文件的文件名字,第二个参数是文件的访问权限以及文件数据写入方式。简单说明一下几种方式:

Activity.MODE_PRIVATE,//默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容Activity.MODE_WORLD_READABLE,//表示当前文件可以被其他应用读取,  Activity.MODE_WORLD_WRITEABLE,//表示当前文件可以被其他应用写入;  Activity.MODE_APPEND//该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件  

可以复合使用例如:
如果希望文件被其他应用读和写,可以传入:Activity.MODE_WORLD_READABLE+Activity.MODE_WORLD_WRITEABLE  

看下具体写入文件的存储结构:

看到上面的存储数据那么清晰是不是吓坏了!对!你没有看错!存储在文件中就是这样的,纯明文存储没有一点安全性可言~即使设置了Activity.MODE_PRIVATE权限在ROOT权限面前也是不堪一击的。所以我们在使用SharedPreferences的时候尽量不要存储一些有关用户信息的数据比如本文例子中的userId,userPwd等,如果要存储那该怎么补救的呢?我们可以把key md5一下例如MD5Utils.md5(USER_ID),value 值加密一下,可以采用AES加密 附上一个AndroidAES加密文章(http://www.cnblogs.com/whoislcj/p/5473030.html)。

时间: 2024-10-08 00:26:18

Android之探索SharedPreferences数据存储的背后的相关文章

Android的4中数据存储方式

Android的4中数据存储方式:1.SharedPreference2.SQLite3.ContentProvider4.File 1.SharedPreference 1)轻量级数据存储方式A 2)本质是基于XML文件存储key-value键值对数据 3)用于保存应用程序的 参数/属性的配置信息 SharedPreference对象本身只能获取数据而不支持存储和修改,修改是通过Editor来实现 实现SharedPreference存储的步骤: (1)获得SharedPreference对象

Android开发系列之数据存储(一)

  Android开发中,数据存储主要有五种:网络.数据库.SharePreferences.文件以及Content Provider.   . 数据库    Android中的数据库最常用的是Sqlite. 使用Sqlite进行数据存储,可分为以下几步:    . 继承SqliteOpenHelper    . 整理4个构造方法    . 重写onCreate与onUpgrade      public class DownDBHelper extends SQLiteOpenHelper {

Android开发手记(16) 数据存储一 SharedPreferences

SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据.这类似于C++中Map的数据存储方式(实际上在最后生成的.xml文件内,就是以Map格式存储的). 获取SharedPreferences的两种方式: 1.调用Context对象的getSharedPreferences()方法 2.调用Activity对象的getPrefer

18.Android之SharedPreferences数据存储学习

SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据. 实现SharedPreferences存储的步骤如下: (1)获取SharedPreferences对象 (2)利用edit()方法获取Editor对象. (3)通过Editor对象存储key-value键值对数据. (4)通过commit()方法提交数据. 实现代码: 1

android开发系列之数据存储

在我们的android实际开发过程,必不可少的一种行为操作对象就是数据.有些数据,对于用户而言是一次性的,这就要求我们每次进到App的时候,都需要去刷新数据.有些数据,对于用户而言又是具有一定时效性的,比如用户账号数据.这种情况下,就要求我们采用一定的数据保存措施,在这篇博客里面,我将为大家分享一些android里面常用的数据保存方法. 首先在android里面我们用的比较多的小数量存储方式可能就是SharedPreferences,那么什么是SharedPreferences呢?为了保存软件的

Android开发手记(20) 数据存储五 网络存储

Android为数据存储提供了五种方式: 1.SharedPreferences 2.文件存储 3.SQLite数据库 4.ContentProvider 5.网络存储 安卓的网络存储比较简单,因为Android提供的 Uri 和 Intent 可以帮助我们完成大多数任务. 一.发送邮件 首先,我们来看一下如何写一个发邮件的程序.前提是需要在系统邮件程序中配置好邮件发送的账户.由于发送邮件需要访问网络,所以我们需要添加如下权限: <uses-permission android:name="

Android 学习笔记之数据存储SharePreferenced+File

学习内容: Android的数据存储.... 1.使用SharedPreferences来保存和读取数据... 2.使用File中的I/O来完成对数据的存储和读取...   一个应用程序,经常需要与用户之间形成交互...需要保存用户的设置和用户的数据信息...这些都离不开数据的存储...Android的数据采用五种方式来进行存储...在这里就先介绍两种存储方式... 1.使用SharedPreferences存储数据...   对于软件配置参数的保存,Windows系统采用ini文件来进行保存,

Android开发笔记之: 数据存储方式详解

无论是神马平台,神马开发环境,神马软件程序,数据都是核心.对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用.总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等:网络,则用于比较重要的事情,比如科研,勘探,航空等实时采集到的数据需要马上通过网络

Android开发-API指南-数据存储

Storage Options 英文原文:http://developer.android.com/guide/topics/data/data-storage.html 采集日期:2015-02-06 存储方式概述 用于简单数据的 Shared Preference 用于私有数据的内部存储 用于大型公开数据的外部存储 用于结构化数据的 SQLite 数据库 在本文中 使用 Shared Preference 使用内部存储 使用外部存储 使用数据库 使用网络连接 参阅 Content Provi