`
isiqi
  • 浏览: 16050165 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

SharedPreferences简介

 
阅读更多
publicinterface
SharedPreferences
android.content.SharedPreferences
SharedPreferences是以键值对来存储应用程序的配置信息的一种方式,它只能存储基本数据类型。
实际上
SharedPreferences是采用了XML格式将数据存储到设备中,它
在DDMS中的FileExplorer中的
/data/data/<packagename>/shares_prefs下。
以下为获取SharedPreferences对象的两个方法:
Context.getSharedPreferences(Stringname,intmode)
参数
name为本组件的配置文件名(如果想要与本应用程序的其他组件共享此配置文件,可以用这个名字来检索到这个配置文件)。
mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。
Activity.SharedPreferencesgetPreferences(intmode)
RetrieveaSharedPreferencesobjectforaccessingpreferencesthatareprivatetothisactivity.
ThissimplycallstheunderlyinggetSharedPreferences(String,int)method
bypassinginthisactivity'sclassnameasthepreferencesname.

参数
modeOperatingmode.UseMODE_PRIVATEforthedefaultoperation,MODE_WORLD_READABLEandMODE_WORLD_WRITEABLEtocontrolpermissions.
这里以Activity的名字作为name参数调用Context.getSharedPreferences(Stringname,intmode)
mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。


如果要读取SharedPreferences的信息,只需要直接使用SharedPreferences对象的getXXX()方法即可,
而如果要写入配置信息,则必须先调用SharedPreferences对象的edit()方法,
得到SharedPreferences.Editor对象,然后再调用Editor的putXXX()方法写入配置信息,
最后调用Editor的commit()方法提交更改后的配置文件。


因为很多程序都有这个需要所以可以自己把该功能集成并列出一些接口函数以后用的话会方便很多。
SharedPreferencesResolver.java文件
packagecom.teleca.util;

importjava.util.Map;

importandroid.content.Context;
importandroid.content.SharedPreferences;

publicclassSharedPreferencesResolver{
SharedPreferences.Editoreditor;

Contextcontext;
SharedPreferencessp;


publicSharedPreferencesResolver(Contextc,Stringname,intmode){
context=c;
sp=context.getSharedPreferences(name,mode);
}
publicfinalbooleancontains(Stringkey)
{
returnsp.contains(key);
}
publicfinalMap<String,?>getAll()
{
returnsp.getAll();
}
publicfinalStringgetValue(Stringkey,StringdefaultValue){
returnsp.getString(key,defaultValue);
}
publicfinalbooleangetValue(Stringkey,booleandefaultValue){
returnsp.getBoolean(key,defaultValue);
}
publicfinalfloatgetValue(Stringkey,floatdefaultValue){
returnsp.getFloat(key,defaultValue);
}
publicfinalintgetValue(Stringkey,intdefaultValue){
returnsp.getInt(key,defaultValue);
}
publicfinallonggetValue(Stringkey,longdefaultValue){
returnsp.getLong(key,defaultValue);
}
publicfinalvoidregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListenerlistener)
{
sp.registerOnSharedPreferenceChangeListener(listener);
}
publicfinalvoidunregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListenerlistener)
{
sp.unregisterOnSharedPreferenceChangeListener(listener);
}
publicfinalvoidOpenEditor(){
if(editor==null)
editor=sp.edit();
}
publicfinalvoidclearEditor()
{
editor.clear();
}
publicfinalvoidputValue(Stringkey,Stringvalue){
editor.putString(key,value);
}
publicfinalvoidputValue(Stringkey,booleanvalue){
editor.putBoolean(key,value);
}
publicfinalvoidputValue(Stringkey,floatvalue){
editor.putFloat(key,value);
}
publicfinalvoidputValue(Stringkey,intvalue){
editor.putInt(key,value);
}
publicfinalvoidputValue(Stringkey,longvalue){
editor.putLong(key,value);
}
publicfinalvoidremove(Stringkey)
{
editor.remove(key);
}
publicfinalvoidcommitEditor(){
if(editor!=null)
editor.commit();
}

publicfinalvoidcloseEditor(){
editor=null;
}
}

访问本应用程序的SharedPreferences:
StringspName="contacts";
intspMode=Context.MODE_WORLD_WRITEABLE|Context.MODE_WORLD_READABLE;
SharedPreferencesResolverspResolver=newSharedPreferencesResolver(Hello.this,spName,spMode);
spResolver.OpenEditor();
spResolver.putValue("name","hubin");
spResolver.putValue("phone","13880890660");
spResolver.commitEditor();
spResolver.closeEditor();
Log.i(tag,spResolver.getValue("name",""));
Log.i(tag,spResolver.getValue("phone",""));
这里用Context.MODE_WORLD_WRITEABLE|Context.MODE_WORLD_READABLE表示所有应用程序都对它可读可写。
跨包访问另外一个应用程序的SharedPreferences.
try{
ContextotherContext=this.createPackageContext("com.teleca",Context.CONTEXT_IGNORE_SECURITY);
Stringname="contacts";
intmode=Context.MODE_WORLD_WRITEABLE;
SharedPreferencessp=otherContext
.getSharedPreferences(name,mode);

Log.i(tag,"name:"+sp.getString("name","NA"));
Log.i(tag,"phone:"+sp.getString("phone","NA"));
SharedPreferences.Editoreditor=sp.edit();
editor.putString("wife","yangyang");
editor.commit();
Log.i(tag,"wife:"+sp.getString("wife","NA"));
}catch(NameNotFoundExceptione){
Log.e(tag,"Erro:",e);
}
注意需要在SharedPreferences创建时通过mode参数来设置非本地应用程序的访问权限。
Context.MODE_WORLD_WRITEABLE所有应用程序对它可写。
Context.MODE_WORLD_READABLE所有应用程序对它可读。
Context.MODE_WORLD_WRITEABLE|Context.MODE_WORLD_READABLE所有应用程序都对它可读可写。
运行使用相同用户ID的一组应用程序
有时,设置应用程序的用户ID是极为有用的(大多数情况下,较好的方式是让平台选择一个唯一的ID)。
如果多个应用程序需要在相互之间存储数据。但是你不希望这些数据被其他应用程序访问,
则可以将权限设置为私有并共享UID来允许访问。可以在mainfest文件中使用ShareUserId属性来共享UID。
android:sharedUserId="YourFancyID"
分享到:
评论

相关推荐

    android自动登录SharedPreferences

    SharedPreferences简介 SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/&lt;包名&gt;/shared_prefs目录下。...

    Android通过SharedPreferences实现自动登录记住用户名和密码功能

    SharedPreferences简介 SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/&lt;包名&gt;/shared_prefs目录下。...

    简介Android应用中sharedPreferences类存储数据的用法

    主要介绍了Android应用中使用sharedPreferences类存储数据的方法,文中举了用SharedPreferences保存数据和读取数据的例子,需要的朋友可以参考下

    SharedPreferences

    文章目录简介一、文件保存二、SP创建三、SP数据加载四、getxxx()操作五、putXXX()操作5.1 commit &&apply5.2 apply5.3 SP监控六、SP落盘机制七、优化总结 简介 sp作为轻量级存储,数据最终都是以xml的形式进行存储的...

    android中SharedPreferences实现存储用户名功能

    1. 简介 SharedPreferences是一种轻型的数据存储方式,通过key-value键值对的方式将数据存储在xml文件中,常用于存储简单的配置信息。 2. 使用方式 2.1 获取SharedPreferences对象 Android中可通过以下三种方式获取...

    Android通过”记住密码”功能学习数据存储类SharedPreferences详解及实例

    SharedPreferences是Android中存储简单数据的一个工具类。可以想象它是一个小小的Cookie,它通过用键值对的方式把简单数据类型(boolean、int、float、long和String)存储在应用程序的私有目录下(data/data/包名/...

    C++文件读写详解

    本文件详细介绍了文本文件以及二进制文件的读写操作,内容详实,简介易懂。

    android学习文档

    1、JSON简介 34 2、Gson介绍 34 3、JSON与XML 34 4、Android中对xml的解析 35 4.1 学习json数据格式,编写xml文件转化成实体bean的工具类 35 1.先写一个工具类,把list集合转化成xml格式,注意支持各种类型 35 分析:用...

    contentprovider

    采用sharedpreferences共享数据 需要使用sharedpreferences API读写数据 而使用ContentProvider共享数据的好处是统一了数据访问方式 2)Uri类简介 Uri uri Uri parse &quot;content: ...

    疯狂Android讲义源码

     1.1.1 Android的发展和简介 2  1.1.2 Android平台架构及特性 3  1.2 搭建Android开发环境 5  1.2.1 下载和安装Android SDK 5  1.2.2 安装Eclipse和ADT插件 7  1.3 Android常用开发工具的用法 10  1.3.1 创建...

    疯狂Android讲义.part2

    1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装Eclipse和ADT插件 7 1.3 Android常用开发工具的用法 10 1.3.1 创建、删除和浏览...

    疯狂Android讲义.part1

    1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装Eclipse和ADT插件 7 1.3 Android常用开发工具的用法 10 1.3.1 创建、删除和浏览...

    android知识大总结【邯院】

    第七章 SharedPreferences进行数据存储 38 第八章 SQLITE数据库 42 第九章 ListView控件的使用 50 第十章 Activity互相调用 62 第十一章 意图Intent的使用 70 第十二章 Activity的生命周期 72 第十三章 互联网开发 ...

    [《第一行Android代码》读书笔记] 第7章 跨程序共享数据——探究内容提供器

    ​ 数据持久化技术,包括文件存储、SharedPreferences存储以及数据库存储,都只能在当前应用程序中访问。跨程序数据共享需要用到另一种技术——内容提供器。 7.1 内容提供器简介 ​ 内容提供器(Content Provider...

    Android音乐播放器毕业设计论文

    4.1.1 Android简介 - 18 - 4.1.2 Android Features特性 - 18 - 4.1.3 Android基本框架(Android Architecture) - 19 - 4.1.4 Android系统的四大组件 - 22 - 4.2 搭建Android开发环境 - 23 - 4.3 Android常用工具的...

    Android手机平台音乐播放器毕业论文

    4.1.1 Android简介 - 18 - 4.1.2 Android Features特性 - 18 - 4.1.3 Android基本框架(Android Architecture) - 19 - 4.1.4 Android系统的四大组件 - 22 - 4.2 搭建Android开发环境 - 23 - 4.3 Android常用工具的...

    java版多用户商城源码-android_engineer:一份android工程师的简历模板

    熟悉掌握Android数据存储(文件、SQLite、SharedPreferences等) 熟练处理Android中的OOM、ANR异常 熟悉使用分享、推送、及第三方支付等功能的 SDK 熟悉阿里百川即时通讯、环信即时通讯 工作经历 ABC有限公司 ( 2017...

Global site tag (gtag.js) - Google Analytics