Android sharedPreferences基本用法和用于两个应用之间共享数据

来源:互联网 发布:淘宝免单红包怎么抽取 编辑:程序博客网 时间:2024/06/02 19:08

本文为网络资料整理,参考文章:

http://blog.csdn.net/jdsjlzx/article/details/19168643

http://www.tuicool.com/articles/Ery6Zr

一.存储方式:

       SharePreferences是使用键值对的方式来存储数据的,也就是保存数据的时候需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharePreferences支持多种不同的数据类型存储,如整形,字符串等

二..获得sharedPreferences对象:

     

    1.Context类中的getSharePreferences()方法:该方法接收2个参数,一个参数用于指定SharePreferences文件的名称,如果指定的文件不存在则会创建一个,SharePreferences文件都是存放在/data/data/<packagename>/shared_prefs/目录下的。第二个参数用于指定操作模式,主要有2种模式可选,MODE_PRIVATE和MODE_MULTI_PROCESS。MODE_PRIVATE仍然是默认的操作模式,和直接传入0效果是相同的,表示只有当前的应用程序才可以对这个 SharePreferences文件进行读写。MODE_MULTI_PROCESS则一般用于会有多个进程中对同一个 SharePreferences文件进行读写的情况。

    2.Activity类中的getPreferences()方法:这个方法和Context中的get SharePreferences()方法很类似,不过只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为SharePreferences文件名。

    3.PreferenceManager类中的getDefaultSharedPreferences()方法:这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharePreferences文件。

三.存取

   

//声明 初始化private SharedPreferences sp;private SharedPreferences.Editor editor;//MODE还有其它模式
public static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE;
//文件为mySp  存放在/data/data/<packagename>/shared_prefs/目录下的sp=getSharedPreferences("mySp", MODE);editor=sp.edit();//存  还有一些其它类型
editor.putString("content","");editor.commit();//取
String content=sp.getString("content","");四.两个应用之间共享数据//提供方应用
public class MainActivity extends ActionBarActivity implements View.OnClickListener{    private SharedPreferences sp;    private SharedPreferences.Editor editor;    private TextView tv_content;    private Button btn_write,btn_clear;    public static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        sp=getSharedPreferences("mySp", MODE);        editor=sp.edit();        tv_content= (TextView) findViewById(R.id.tv_content);        btn_write= (Button) findViewById(R.id.btn_write);        btn_write.setOnClickListener(this);        btn_clear= (Button) findViewById(R.id.btn_clear);        btn_clear.setOnClickListener(this);        String content=sp.getString("content","");        tv_content.setText(content);    }    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn_write:                editor.putString("content",getString(R.string.content));                editor.commit();                String content=sp.getString("content","");                tv_content.setText(content);                break;            case R.id.btn_clear:                editor.putString("content","");                editor.commit();                String content2=sp.getString("content","");                tv_content.setText(content2);                break;            default:                break;        }    }}//接收方应用
public class MainActivity extends ActionBarActivity {    private TextView tv_content;    private SharedPreferences sp;  //此为提供方的包名   private static String PREFERENCE_PACKAGE="com.example.yu.sharepreferencedemo1";    public static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE;    Context c;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        try {            c=this.createPackageContext(PREFERENCE_PACKAGE, Context.CONTEXT_IGNORE_SECURITY);        } catch (PackageManager.NameNotFoundException e) {            e.printStackTrace();        }        sp=c.getSharedPreferences("mySp",MODE);        tv_content= (TextView) findViewById(R.id.tv_content);        String content=sp.getString("content","");        tv_content.setText(content);    }}

 








0 0
原创粉丝点击