Android---34---SharedPreferences

SharedPreferences 保存的数据主要是类似于配置信息格式的数据,因此他保存的数据主要是简单的 k-v 对。

SharedPreferences接口主要负责读取应用程序的Preferences数据,它提供了如下的常用方法:

SharedPreferences接口本身没有提供写入数据的能力,而是通过SharedPreferences的内部接口,调用edit()方法即可获得它所对应的Editor对象。提供以下的方法来写入数据。

Commit:当Editor编辑完成后,调用该方法提交修改。

从用法角度来看,SharedPreferences和Editor组合起来非常像Map,其中SharedPreferences用来读取数据,而Editor用来写入数据。

创建一个SharedPreferences:

它本身是一个接口,无法直接创建实例,只能通过Contex提供的getSharedPreferences(String name , int mode)来获取SharedPreferences实例。第二个参数支持如下几个值:

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

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

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

小例子:随机数的写入与读取

程序中只有两个Button,一个用来写入数据,一个用来读取数据,故此不再给出布局代码。

import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

/**
 *
 * @author Caesar
 *
 */
public class MainActivity extends Activity {

	SharedPreferences preferences;
	SharedPreferences.Editor editor;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		preferences = getSharedPreferences("crazyit", MODE_WORLD_READABLE);
		editor = preferences.edit();

		Button read, write;

		write = (Button) findViewById(R.id.write);
		read = (Button) findViewById(R.id.read);

		read.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				// 读取字符串数据
				String time = preferences.getString("time", null);
				// 读取int类型的数据
				int randomNum = preferences.getInt("random", 0);
				String result = time == null ? "您暂时还未写入数据" : "写入时间为 : " + time
						+ "\n 上次生成的随机数是:" + randomNum;

				Toast.makeText(MainActivity.this, result, 0).show();
			}
		});

		write.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 "
						+ "hh:mm:ss");
				// 存入当前时间
				editor.putString("time", sdf.format(new Date()));
				// 存入一个随机数
				editor.putInt("random", (int) (Math.random() * 100));
				// 提交所有存入的数据
				editor.commit();
			}
		});

	}
}

记录程序的使用次数:

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

/**
 * 记录应用程序的使用次数:
 *
 * @author Caesar
 *
 */
public class MainActivity extends Activity {

	SharedPreferences preferences;
	SharedPreferences.Editor editor;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		preferences = getSharedPreferences("count", MODE_WORLD_READABLE);
		editor = preferences.edit();

		int count = preferences.getInt("count", 0);
		Toast.makeText(MainActivity.this, "程序已被使用 : " + count + "次", 0).show();

		editor.putInt("count", ++count);
		editor.commit();

	}
}

读写其他应用的SharedPreferences:

前提:指定权限

步骤:

1.需要创建其他程序对应的Contex

2.调用其他应用程序的COntex的getSharedPreferences(String name , int mode) 即可获取响应的SharedPreferences对象

3.如果需要向其他应用的SharedPreferences数据写入数据,调用SharedPreferences的edit方法获取响应的Editor即可

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.Menu;
import android.view.MenuItem;
import android.widget.TextView;

/**
 *
 * @author Caesar
 *
 */
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Context useCount = null;
		try {
			//获取其他应用程序锁对应的Contex
			useCount = createPackageContext(
					"com.example.sharedpreferencesdemo2",
					Context.CONTEXT_IGNORE_SECURITY);
		} catch (NameNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//使用其他程序的Contex获取对应的SharedPreferences
		SharedPreferences preferences = useCount.getSharedPreferences("count",
				Context.MODE_WORLD_READABLE);

		int count = preferences.getInt("count", 0);
		TextView show = (TextView) findViewById(R.id.show);
		show.setText("SharedPreferencesDemo2  已经被使用  " + count + "  次");

	}
}
时间: 2025-01-05 01:07:37

Android---34---SharedPreferences的相关文章

18.Android之SharedPreferences数据存储学习

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

Android的SharedPreferences实用技巧

转自:http://blog.csdn.net/jingfeizhu/article/details/10017779 SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data/data/<包名>/shared_prefs目录下.SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现.实现SharedPreferences存

android基础----&gt;SharedPreferences的使用

说明: 1. SharedPreferences是使用键值对的方式来存储数据的. 2. SharedPreferences保存的数据将持续整个用户会话,即使你的应用程序被杀掉(killed),直到应用程序卸载 3. SharedPreferences有三种模式: Context.MODE_PRIVATE:别的应用不能访问得到SharedPreferences对象 Context.MODE_WORLD_READABLE:别的应用可以访问,并且是可以读取SharedPreferences中的数据,但

Android 使用SharedPreferences进行数据存储和读取数据

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存.如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPreferen

学习Android之SharedPreferences使用

效果图如下: 当我们想让自己的属性设置保存下来,这时就需要SharedPreferences. 上面这个小程序,音乐状态是保存下来的.使用的上一次退出的状态. 进入DDMS,data文件下的data文件中,找到自己的包名文件,双击打开,有shared_prefs文件,里面有xml文件,这就是配置文件. 本程序使用了android的上下键,同常我们的模拟器的方向键是不能用的,这是就需要我们打开它,在C盘下找到文件 .android,双击avd文件,找到你的模拟器的文件夹,双击打开,找到config

Android使用SharedPreferences保存对象

核心原理: 对象序列化 步骤 1.要保存的对象实现序列化Serializable 2.将序列化的对象保存String(本文的做法是保存为byte数组在转为16进制的String类型保存起来) 3.将保存的String反序列化为对象 下面是完整代码 步骤1.要保存的对象实现序列化Serializable public class Sertest implements Serializable{ private String name; private int age; } 步骤2.将序列化的对象保

Android之SharedPreferences工具类

本工具类永久维护,永久更新,如果各位读者发现有bug或者不合理之处,请留言,博主将第一时间改正. 本工具类提供的功能有: 1.存储五种类型的数据: 2.读取五种类型的数据: 内容如下: import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; /** * * @author bear * * SharedPre

Android Them+SharedPreferences 修改程序所有view字体颜色、大小和页面背景

有这么一个需求,可以对页面的样式进行选择,然后根据选择改变程序所有字体颜色和页面背景.同时下一次启动程序,当前设置依然有效. 根据需求,我们需要一种快速,方便,有效的方式来实现需求,然后可以通过Android Them + SharedPreferences 来实现需求.Them用于存放设置的每一种样式,并应用于程序中,SharedPreferences用于记住程序当前的样式,根据SharedPreferences的内容来设置程序的样式,实现下次启动能够oncreat当前的样式设置. 这里的Th

Android:SharedPreferences 记住用户名和密码

参考:http://blog.csdn.net/liuyiming_/article/details/7704923 SharedPreferences介绍: SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在"/data/data<package name>/shared_prefs"目录下. SharedPreferences的用法: 由于SharedPreferences是

android中sharedPreferences的用法

SharedPreferences介绍: 做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率,因此我们使用键值这种一一对应的关系来存放这些配置信息.SharedPreferences正是Android中用于实现这中存储方式的技术. SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据.SharedPreferences只能保存简单类型的数据,例