android SharedPreferences数据存储
android SharedPreferences数据存储
很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件进行保存。而对于Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下:
SharedPreferences sharedPreferences = getSharedPreferences("itcast", Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();//获取编辑器
editor.putString("name", "传智播客");
editor.putInt("age", 4);
editor.commit();//提交修改
生成的itcast.xml文件内容如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name">传智播客</string>
<int name="age" value="4" />
</map>
你可以在eclipse中通过window ---》show views ----》other ---》android ---》file Exploler
在这个目录下找到:/data/data/<package name>/shared_prefs找到生成的itcast.xml文件
因为SharedPreferences背后是使用xml文件保存数据,getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式,这四种模式前面介绍使用文件方式保存数据时已经讲解过。如果希望SharedPreferences背后使用的xml文件能被其他应用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。
访问SharedPreferences中的数据代码如下:
SharedPreferences sharedPreferences = getSharedPreferences("itcast", Context.MODE_PRIVATE);
//getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 1);
如果访问其他应用中的Preference,前提条件是:该preference创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE权限。如:有个<package name>为cn.itcast.action的应用使用下面语句创建了preference。
getSharedPreferences("itcast", Context.MODE_WORLD_READABLE);
其他应用要访问上面应用的preference,首先需要创建上面应用的Context,然后通过Context 访问preference ,访问preference时会在应用所在包下的shared_prefs目录找到preference :
Context otherAppsContext = createPackageContext("cn.itcast.action", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("itcast", Context.MODE_WORLD_READABLE);
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 0);
如果不通过创建Context访问其他应用的preference,可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:
File xmlFile = new File(“/data/data/<package name>/shared_prefs/itcast.xml”);//<package name>应替换成应用的包名
一下是创建SharedPreference对象,保存数据与删除数据:
1、创建SharedPreferences对象:
String spName = "SharedPreferences";
SharedPreferences dataBase;
dataBase = getSharedPreferences(spName, 0);
2、创建保存方法:
public void saveData() {
dataBase.edit().putString("NAME", userName.getText().toString())
.putString("PASS", password.getText().toString())
.commit();
}
3、创建删除方法:
public void clearData() {
dataBase.edit().clear().commit();
// sharedPreferences.edit().remove("name").commit();
}
参考地址:
http://vvsongsunny.iteye.com/blog/998681
http://blog.sina.com.cn/s/blog_4abb70a20100po2w.html
android SharedPreferences数据存储相关推荐
- Android的数据存储之一------SharedPreferences
下面将介绍下Android的数据存储,Android提供了5种方式存储数据: 1.SharedPreferences存储数据; 2.文件存储数据: 3.SQLite数据库存储数据: 4.使用Conte ...
- Android常用数据存储之SharedPreferences存储和读取用法分享
一:Android常用数据存储,一共有五种方式,分别是 1.SharedPreferences储存数据, 2.文件存储 3.SQLite数据存储 4.ContentProvider储存数据 5.网络存 ...
- 005 Android之数据存储
文章目录 Android文件系统 Android文件的访问权限 文件访问权限实例 数据存储方式 内部存储 内部存储实例 外部存储 Shared Preferences Shared Preferenc ...
- android 储存方案,Android本地数据存储方案(一)
Android系列的博客主要是记录和总结自己在平时学习之中遇到的问题,方便日后用到时查看,同时也希望对读者有所帮助.不足之处,欢迎指正~ 在说到Android数据存储之前,先提一下数据持久化,所谓数据 ...
- android常用的存储方式,Android 常见数据存储方式
Android 常见数据存储方式有以下三种:1.使用SharedPreferences存储数据:其本质就是一个xml文件,可以保存字符串.布尔值.基础数据.集合等数据.常用于存储较简单的参数设置. 2 ...
- Android之数据存储-刘志远-专题视频课程
Android之数据存储-17742人已学习 课程介绍 本课程介绍了Android中几种数据存储方式,让大家对Android中的数据存储一个系统的认识 课程收益 本课程介绍了A ...
- android app数据存储,基于Android开发的APP数据存储研究
谢原武+龙文 摘要: 作为一个完整的应用程序,数据存储操作是必不可少的.Android系统一共提供了四种数据存储方式分别为File文件存储.Shared Preferences存储.ContentPr ...
- Android的数据存储和IO - 自动朗读(TTS)
Android的数据存储和IO - 自动朗读(TTS) 自动朗读又是Android提供的另一种另类的IO,蛮不错的哦,支持对指定文本内容进朗读,学习完这个内容我立马就让它朗读:wwj is a goo ...
- 【Android】数据存储,文件,数据库
Android中数据存储 一.在内部存储读写文件 1.文件io读写 写文件 //写入数据 private fun saveFile() {//将文件写入内部存储空间时,只能在本应用的目录中写入,不能写 ...
最新文章
- 知识图谱能否成为企业下一代的数据仓库
- 【Cocos2d-X开发笔记】第一期 Cocos2d-X的环境搭建
- mysql密码正确却提示错误, 不输入密码反而能登录
- P2698-花盆Flowerpot【单调队列】
- linux文件什么权限比较安全,linux文件安全与权限
- HeadFirst设计模式之观察者模式学习
- [洪流学堂]Hololens开发入门篇1之模拟器开发环境配置
- DataBseDesign工作笔记002---数据库表设计
- Scala进阶之路-I/O流操作之文件处理
- PYECHARTS 实战 国内/国际地图航线图制作 (一)
- java 读usb口 用POS-58 90U 打印
- 寻找春天nbsp;九宫格日记-2011.09.20
- PAYPAL使用虚拟卡的会有优势吗?
- android华为怎么截屏快捷键,华为P9/P9Plus怎么截图 快捷键截图方法介绍
- [Unity基础]GL图像库
- 左右连接之where
- 人工神经网络研究的目的,人工神经网络训练过程
- 什么是CRM?CRM定义/CRM适用于谁?/CRM系统有什么作用?
- 宗镜录略讲——南怀瑾老师——系列9
- WordCount单词计数详解