- 浏览: 799489 次
- 性别:
- 来自: 哈尔滨
文章分类
最新评论
-
doloveme:
$sudo cp MONACO_Linux.ttf /usr/ ...
terminator 的配置 -
腾讯rep:
lowser
RSA加密算法c++简单实现 -
csuhanyong:
好YD啊,好YD
一图流:机械键盘各轴区别 -
doloveme:
1。其中:extman ,extmail下载http://ww ...
Ubuntu下安装postfix+extmail邮件服务器 -
doloveme:
repo sync出现“fatal: '../platform ...
Android 编译环境配置搭建(Ubuntu 12.04)及环境导致编译错误QA
在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进行简单的操作
- package com.jiahui.preferences;
- import android.app.Activity;
- import android.content.SharedPreferences;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- public class SharedPreferencesDemoActivity extends Activity {
- private SharedPreferences sharedPreferences;
- private SharedPreferences.Editor editor;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- sharedPreferences = this.getSharedPreferences("test",MODE_WORLD_READABLE);
- editor = sharedPreferences.edit();
- final EditText edtName = (EditText) this.findViewById(R.id.edtName);
- final EditText edtAge = (EditText) this.findViewById(R.id.edtAge);
- Button btnRead = (Button) this.findViewById(R.id.btnRead);
- Button btnWrite = (Button) this.findViewById(R.id.btnWrite);
- btnRead.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // 如果没有这个key就以默认值
- String name = sharedPreferences.getString("name", null);
- int age = sharedPreferences.getInt("age", 0);
- edtAge.setText(String.valueOf(age));
- edtName.setText(name);
- }
- });
- btnWrite.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String name = edtName.getText().toString();
- int age = Integer.parseInt(edtAge.getText().toString());
- editor.putInt("age", age);
- editor.putString("name", name);
- // 一定要提交
- editor.commit();
- }
- });
- }
- }
实现效果:
用File Explorer可以查看在data/data/com.jiahui.preferences/shared_prefs/下多了一个XML文件
将XML文件导出我们可以看到在这个XML文件里存储了以下内容:
- <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
- <map>
- <int name="age" value="20" />
- <string name="name">jiahui</string>
- </map>
读写其他应用SharedPreferences
在有时的开发过程中,我们可能要访问其他的应用程序的SharedPreferences,要实现这样的功能,我们必须要保证要访问的那个应用程序的SharedPreferences的访问权限要是MODE_WORLD_READABLE,这表明该SharedPreferences可以被其他应用程序读取,如果指定的MODE_WORLD_WRITEABLE表明该SharedPreferences可以被其他应用程序读取写入其实现思路如下
1、 获得其他应用程序对应的Context
2、 通过这个Context得到这个应用程序的SharedPreferences,然后再利用这个SharedPreferences读取内容
以上一例的SharedPreference为例。实现代码:
- package com.jiahui.preferences2;
- import android.app.Activity;
- import android.content.Context;
- import android.content.SharedPreferences;
- import android.content.pm.PackageManager.NameNotFoundException;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- public class SharedPreferencesDemo02Activity extends Activity {
- private Button btnRead;
- private EditText edtResult;
- Context otherContext;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- try {
- // 获取其他应用程序的Context
- otherContext = createPackageContext("com.jiahui.preferences",
- CONTEXT_IGNORE_SECURITY);
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- }
- edtResult = (EditText) this.findViewById(R.id.edtResult);
- btnRead = (Button) this.findViewById(R.id.btnRead);
- btnRead.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // 获取其他应用程序的SharedPreferences
- SharedPreferences preferences = otherContext
- .getSharedPreferences("test",
- Context.MODE_WORLD_READABLE);
- String name = preferences.getString("name", null);
- int age = preferences.getInt("age", 0);
- edtResult.setText("访问的结果为:姓名:" + name + "年龄:" + age);
- }
- });
- }
- }
实现效果:
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 : http://blog.csdn.net/jiahui524/article/details/6971662
发表评论
-
JAVA代码混淆
2016-05-05 18:24 1363JAVA代码混淆 <!--[if !supportL ... -
android 监听状态栏被下拉
2015-12-25 17:23 3372Activity的onWindowFocusChange()方 ... -
android使用mount挂载/system/app为读写权限,删除或替换系统应用
2015-11-27 14:13 3946注意:以下代码中#开头的则为需要执行的shell命令,其他的 ... -
Ubuntu 14.04 文件服务器--samba的安装和配置
2015-11-10 10:49 598jingyan.baidu.com/album/00a07f ... -
linux生成指定大小的文件
2015-08-26 16:02 1652# dd if=/dev/zero of=50M.file ... -
intellij 打开工程在每个java文件上 有个红色的无效符
2015-07-24 13:52 1707说明该类不是可编译文件。在project Structure中 ... -
logcat命令详解
2015-07-22 16:34 926Android日志系统提供了记录和查看系统调试信息的功能。日 ... -
gradle打包遇到的错误汇总
2015-07-21 11:32 0错误1:A problem occurred ... -
SpringMVC入门
2015-07-02 18:23 736目录 介绍 实例 总结 参考资料 介绍 Sp ... -
Android读写XML(下)——创建XML文档
2015-04-29 11:02 569在前面的2篇文章Android读写XML(上)—— pack ... -
Android读写XML(中)——SAX
2015-04-29 10:54 588在Android读写XML(上) ... -
Android读写XML(下)——创建XML文档
2015-04-29 10:52 658在前面的2篇文章Android读写XML(上)—— pack ... -
android:configChanges locale 改语言后,该配置不起作用的原因
2015-03-23 14:38 2340@Override public void on ... -
android.app.Fragment$InstantiationException 解决办法
2015-03-23 13:46 1309android.app.Fragment$Instantia ... -
linux 查看内存
2015-02-10 13:08 6931、free监控内存使用情况 #free 2、watc ... -
android fastboot 刷机 指令
2015-01-19 18:31 1464原生bootloader:bootloader-gro ... -
[Android实例] android中进行https连接的方式的详解 (转发)
2015-01-09 15:50 665x 如果不需要验证服务器端证书, ... -
编译android源码apk是否生成odex方法
2014-10-20 17:19 1577其实Android系统默认的配置是,如果没有指定DISABL ... -
关于android源码中的APP编译时引用隐藏的API出现的问题
2014-10-20 15:36 769今天在编译android源码中的计算器APP时发现,竟然无法 ... -
Android系统进程Zygote启动过程的源代码分析
2014-09-17 10:09 452在Android系统中, ...
相关推荐
DataStore 以异步、一致的事务方式存储数据,克服了 SharedPreferences(以下统称为SP)的 一些缺点。 DataStore 基于 Kotlin 协程和 Flow 实现,并且可以对 SP 数据进行迁移,旨在取代 SP 。 DataStore 提供了两种...
嵌入式Android项目设计与开发 第六章 数据存储 ——SharedPreferences 2 SharedPreferences 键值对概念: 某一个数据都由一个键和一个值构成,键代表数据的名称,它是全局唯一的。具体的数据内容存放在值中。 键值对...
Android项目开发中使用的数据存储方式有:网络存储、sqlite存储、File存储和SharedPreferences存储,四种存储方式对应的Demo别人是NetworkDemo、SqliteDemo、FileDemo和SharedPreferencesDemo,根据应用的场景选择...
SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能...
sharedpreferences Demo
SharedPreferences文件在不同应用之间数据共享
android应用SharedPreferences_Demoandroid应用SharedPreferences_Demoandroid应用SharedPreferences_Demoandroid应用SharedPreferences_Demoandroid应用SharedPreferences_Demoandroid应用SharedPreferences_Demo...
一个SharedPreferences工具类 在工程根目录build.gradle添加jitpack: allprojects { repositories { maven { url "https://jitpack.io" } } } 在使用AnyPref的模块中添加: dependencies { compile '...
利用SharedPreferences设置初始密码,并修改密码。详见http://blog.csdn.net/chenfengdejuanlian/article/details/46331031
使用SharedPreferences保存数据
SharedPreferences存取list集合
使用SharedPreferences保存key-value对
SharedPreferences可以让不同程序之间的数据进行共享,当两个应用程序之间数据需要传递或者共享时,可以使用这个方法。本文会使用两个例子SharePreferenceWrite和SharePreferenceRead,前者为一个写...
介绍了SharedPreferences存储复杂的对象源码!
android学习SharedPreferences使用demo源代码
Android SharedPreferences应用 实现本地注册登陆 功能简单易懂(实例) http://blog.csdn.net/h1028962069/article/details/9129851 文章代码
Android自学笔记-8-Android数据存储1:文件、SharedPreferences和获取sd卡信息
SharedPreferences是Android提供的一个轻量级存储类,经常用于保存软件设置参数。存放的格式为xml,文件存放在 /data/data/<package name>/shared_prefs下。