Android之SharedPreferences

本文介绍了如何使用Android的SharedPreferences接口实现简单的数据存储与读取操作,包括设置和获取key-value对,并展示了跨应用读取SharedPreferences的方法。

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

SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此它保存的数据主要是简单类型的key-value对。

SharedPreferences接口主要负责读取应用程序的SharedPreferences数据。

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

SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name,int mode)方法来获取

SharedPreferences实例。

packagecn.class3g.activity;

 

importandroid.app.Activity;

importandroid.content.Context;

importandroid.content.SharedPreferences;

importandroid.content.SharedPreferences.Editor;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.Toast;

 

publicclass SharedPreferencesTestActivity extends Activity implements

              OnClickListener {

 

       Button saveBtn, readBtn;

       EditText nameEt, ageEt;

 

       public void onCreate(BundlesavedInstanceState) {

              super.onCreate(savedInstanceState);

              setContentView(R.layout.main);

 

              findViews();

       }

 

       private void findViews() {

              nameEt = (EditText)this.findViewById(R.id.nameEt);

              ageEt = (EditText)this.findViewById(R.id.ageEt);

              saveBtn = (Button)this.findViewById(R.id.saveBtn);

              readBtn = (Button)this.findViewById(R.id.readBtn);

 

              saveBtn.setOnClickListener(this);

              readBtn.setOnClickListener(this);

       }

 

       @Override

       public void onClick(View v) {

              String name = "无名氏";

              int age = -1;

             

              SharedPreferences shared =this.getSharedPreferences("info",

                            Context.MODE_WORLD_READABLE); //+ Context.MODE_WORLD_WRITEABLE

             

              switch (v.getId()) {

              case R.id.saveBtn:

                     name =nameEt.getText().toString().trim();

                     age =Integer.valueOf(ageEt.getText().toString().trim());                 

 

                     Editor editor =shared.edit();

                     editor.putString("name",name);

                     editor.putInt("age",age);

 

                     // 保证操作的事务完整性

                     editor.commit();

 

                     break;

              case R.id.readBtn:

                    

                     name = shared.getString("name","无名氏");

                     age =shared.getInt("age", -1);

                    

                     Toast.makeText(this,"name="+name+ " age="+age, Toast.LENGTH_LONG).show();

                    

                     break;

              }

 

       }

}

读取其他应用的SharedPreferences

packagecn.class3g.readother;

 

importandroid.app.Activity;

importandroid.content.Context;

importandroid.content.SharedPreferences;

importandroid.content.SharedPreferences.Editor;

importandroid.content.pm.PackageManager.NameNotFoundException;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.Toast;

 

publicclass ReadOtherSharedPreferencesActivity extends Activity implements

              OnClickListener {

 

       Button readBtn;

 

       public void onCreate(BundlesavedInstanceState) {

              super.onCreate(savedInstanceState);

              setContentView(R.layout.main);

 

              findViews();

       }

 

       private void findViews() {

              readBtn = (Button)this.findViewById(R.id.readOther);

              readBtn.setOnClickListener(this);

       }

 

       public void onClick(View v) {

              if (v.getId() == R.id.readOther) {

                     try {

                            Context otherContext= this.createPackageContext(

                                          "cn.class3g.activity",Context.CONTEXT_IGNORE_SECURITY);

 

                            SharedPreferencesshared = otherContext.getSharedPreferences(

                                          "info",MODE_PRIVATE);

                           

                            String res = "name="+ shared.getString("name", "wms")+

                                          "age="+ String.valueOf(shared.getInt("age", -1));

                           

                            Toast.makeText(this,res, Toast.LENGTH_LONG).show();

                           

//                          Editor editor =shared.edit();

//                          editor.putString("other","我写你了!!");

                           

                     } catch(NameNotFoundException e) {

                            e.printStackTrace();

                     }

              }

 

       }

}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值