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

本文详细介绍了Android中SharedPreferences的使用方法,包括存储方式、获取SharedPreferences对象的不同途径、数据的存取操作及如何实现不同应用间的资源共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

http://blog.youkuaiyun.com/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);
    }


}

 








评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值