SharedPreferences实现应用程序间数据共享

本来打算把这一篇文章写在【使用SharedPreferences实现简单数据存储】之后的,但由于文章出现的问题是在不同的情况下发生和使用的,所以还是分下来下好了。

        SharedPreferences可以让不同程序之间的数据进行共享,当两个应用程序之间数据需要传递或者共享时,可以使用这个方法。本文会使用两个例子SharePreferenceWrite和SharePreferenceRead,前者为一个写SharedPreferences的程序,后者为读取前者写的SharedPreferences。

主要要点

        1、SharedPreferences权限设置,我们在getSharedPreferences方法中第二参数是用来表明我们的SharedPreferences的使用属性的,这个参数可以是下面值:

MODE_PRIVATE=0:只能是当前的应用才能操作文件如果创建的文件已经存在新内容覆盖原内容;

MODE_APPEND=32768:新内容追加到原内容后这个模式也是私有的这个文件只能被创建文件的应用所访问;

MODE_WORLD_READABLE=1:允许其他应用程序读取本应用创建的文件;

MODE_WORLD_WRITEABLE=2:允许其他应用程序写入本应用程序创建的文件,会覆盖原数据。

        所以如果我们的SharedPreferences能让外部程序读取,就必须选择MODE_WORLD_READABLE或或者MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE。

        2、我们一般在写SharedPreferences时使用getSharedPreferences方法,但需要我们注意的时,getSharedPreferences使用的是当前的Context即this,而我们需要在SharePreferenceRead程序中获取SharePreferenceWrite写的SharedPreferences时,一定要获取SharePreferenceWrite的Context,代码如下:

Java代码
  1. Context c = null;  
  2. try {  
  3.         c = this.createPackageContext("org.ourunix.android.sharepreferencewrite"this.CONTEXT_IGNORE_SECURITY);  
  4.         } catch (NameNotFoundException e) {  
  5.             // TODO Auto-generated catch block  
  6.             e.printStackTrace();  
  7.         }     

        其中参数一为我需要获取Context的程序包名,第二个参数为flags 标志位,有CONTEXT_INCLUDE_CODE和CONTEXT_IGNORE_SECURITY两个选项。CONTEXT_INCLUDE_CODE的意思是包括代码,也就是说可以执行这个包里面的代码。CONTEXT_IGNORE_SECURITY的意思是忽略安全警告,如果不加这个标志的话,有些功能是用不了的,会出现安全警告。

        3、获取SharedPreferences,需要用到上述的Context,即Context.getSharedPreferences(NAME, 0);

获取到上下文,我们就好干事情了,呵呵,干过Android的人都知道Context是个好东东,有此宝贝就可以用之来发广播、打开文件夹、数据库操作等都可以完成。

在程序中写SharePreference

        回归主题,我们先看SharePreferenceWrite的代码:

Java代码
  1. public class SharePreferenceWriteActivity extends Activity implements OnClickListener{  
  2.     private SharedPreferences prference;  
  3.     private String PREF_NAME = "PREF_NAME";  
  4.     private String KEY = "TestValue";  
  5.     private EditText mEditText;  
  6.     private Button mButton;  
  7.     /** Called when the activity is first created. */  
  8.     @Override  
  9.     public void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.         setContentView(R.layout.main);  
  12.         mEditText = (EditText) findViewById(R.id.writeTV);  
  13.         mButton = (Button) findViewById(R.id.submit);  
  14.         mButton.setOnClickListener(this);  
  15.     }  
  16.       
  17.     @Override  
  18.     public void onClick(View v) {  
  19.         // TODO Auto-generated method stub  
  20.           
  21.         prference = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE );  
  22.         prference.edit().putString(KEY, mEditText.getText().toString()).commit();  
  23.     }  
  24. }  

        运行效果图:       

SharedPreferences,数据共享

另一个程序中读SharePreference

        再看读取SharePreferenceWrite程序带的SharedPreferences的PreferenceRead程序:

Java代码
  1. public class SharePreferenceReadActivity extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     private SharedPreferences prference;  
  4.     private String NAME = "PREF_NAME";  
  5.     private String KEY = "TestValue";  
  6.     @Override  
  7.     public void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         TextView tv = new TextView(this);  
  10.         setContentView(tv);  
  11.           
  12.         String tmp;  
  13.         Context c = null;  
  14.           
  15.         try {  
  16.             c = this.createPackageContext("org.ourunix.android.sharepreferencewrite", CONTEXT_IGNORE_SECURITY);  
  17.         } catch (NameNotFoundException e) {  
  18.             // TODO Auto-generated catch block  
  19.             e.printStackTrace();  
  20.         }     
  21.           
  22.         if (c != null)  
  23.         prference = c.getSharedPreferences(NAME, MODE_PRIVATE);  
  24.         tmp = prference.getString(KEY, "nothing");  
  25.         tv.setText(tmp);  
  26.     }  
  27. }  

        运行效果图:

SharedPreferences,数据共享

转自:http://www.ourunix.org/android/post/117.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SharedPreferences是Android平台提供的一种轻量级的数据存储方式,用于存储一些简单的键值对数据SharedPreferences存储的数据可以被应用程序和其他应用程序(如果获得相应权限)共享,通常用于存储应用程序的配置信息、用户偏好设置等。 SharedPreferences应用场景包括但不限于以下几个方面: 1. 存储应用程序的配置信息:应用程序的配置信息通常包括一些开关、标志位等,例如是否开启消息推送、是否开启震动等,这些信息可以使用SharedPreferences存储,方便快捷。 2. 存储用户偏好设置:应用程序的用户偏好设置通常包括一些用户习惯、偏好等,例如字体大小、颜色主题等,这些信息可以使用SharedPreferences存储,方便用户在下次打开应用程序时能够保持上一次的设置。 3. 存储应用程序的登录信息:应用程序的登录信息通常包括用户的账号、密码等,这些信息可以使用SharedPreferences存储,方便用户在下次打开应用程序时无需重新登录。 使用SharedPreferences存储数据的具体步骤如下: 1. 获取SharedPreferences对象:可以通过Context的getSharedPreferences()方法或Activity的getPreferences()方法获取SharedPreferences对象。 2. 存储数据:可以通过SharedPreferences.Editor对象的putBoolean()、putInt()、putString()等方法存储数据。 3. 提交数据:必须通过SharedPreferences.Editor对象的commit()或apply()方法提交数据,才能将数据真正地保存到SharedPreferences中。 例如,存储一个Boolean类型的数据可以按照以下代码进行: ``` SharedPreferences sharedPreferences = getSharedPreferences("config", MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putBoolean("is_push_enabled", true); editor.commit(); ``` 以上就是SharedPreferences应用场景及使用方法的简单介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值