功能:多用于保存软件配置参数。其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下:
生成方式:
SharedPreferences sharedPreferences=getSharedPreferences("color",Context.MODE_PRIVATE);
Editor editor=sharedPreferences.edit();
editor.putString("name","星期一");
editor.putInt("age",2);
editor.commit();
会生成color.xml文件,其内容如下:
< ?xml version="1.0" encoding="utf-8" standalone="yes"?>
< map>
< string name="name">星期一
< int name="age" value="2"/>
< /map>
获取方式:
SharedPreferences sharedPreferences=getSharedPreferences("itcast",Context.MODE_PRIVATE);
String namevalue=sharedPreferences.getString("name","");
不同应用SharedPreferences获取xml方式:
Context context=this.createPackageContext("< package name>",Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreferences=context.getSharedPreferences("color",Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
String namevalue=sharedPreferences.getString("name","");
---------
很多时候我们开发的软件需要对处理后的数据进行存储,以供再次访问。Android为数据存储提供了如下几种方式:
文件
SharedPreferences(参数)
SQLite数据库
内容提供者(Content provider)
网络
使用文件进行数据存储
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则京创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取。
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
如果希望文件被其他应用读和写,可以传入:
openFileOUtput("rose.txt",Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/<package name>/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有这样其他程序才能正确访问。
首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。
public class FileActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
...
FileOutputStream outStream = this.openFileOutput("itcast.txt", Context.MODE_PRIVATE);
outStream.write("传智播客".getBytes());
outStream.close();
}
}
openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/<package name>/files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目录就可以看到该文件。
openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为: Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
-----------------
当一个程序打开preference后,不调用editer.commit() ,程序不会进行写操作。