赞
踩
转自:http://blog.csdn.net/yangzhaomuma/article/details/50718191
在使用SharedPreferences的时候,大家都可以看到它有几个读写的标志位,比如 PRIVATE、READABLE、WRITEABLE等。
在使用SharedPreferences进行进程数据共享时,我们发现,有些虽然过时了,但是实际上还是可以用的。
只是Google不建议大家这么干了。所以这篇文章只是一个介绍实现,科普。
怎么实现呢?
先新建两个Android工程,分别命名为:ShareprefenceShareA(后文称为A)、ShareprefenceShareB(后文称为B)。
我们想要实现的目标是,在A中写入到Shareprefence中的内容,在B中可以读到。
先贴出A中代码:
以上代码做的是set、get操作。
package com.example.shareprefencesharea; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { Button btn,btn1; EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.btn); btn1=(Button)findViewById(R.id.btn1); editText=(EditText)findViewById(R.id.text); final SharedPrefencesImp imp=new SharedPrefencesImp(MainActivity.this); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub imp.SetSharedPrefences("info", editText.getText().toString()); } }); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String result= imp.GetSharedPrefences("info"); Toast.makeText(getApplicationContext(), result, 0).show(); } }); } }
以下是SharedPrefencesImp的代码:
package com.example.shareprefencesharea; import android.content.Context; import android.content.SharedPreferences; public class SharedPrefencesImp { private Context context; private String settingString="SharedPrefencesXml"; public SharedPrefencesImp(Context context) { this.context=context; } /** * 设置sharedprefences * @param keyname * @param keyvalue */ public void SetSharedPrefences(String keyname,String keyvalue) { //SharedPreferences.Editor editor=PreferenceManager.getDefaultSharedPreferences(context).edit();写法也可以如此,默认名称为包名 SharedPreferences.Editor editor=context.getSharedPreferences(settingString, Context.MODE_WORLD_READABLE).edit(); editor.putString(keyname, keyvalue); editor.commit(); } /** * 获取sharedprefences中key为keyname的值 * @param keyname * @return */ public String GetSharedPrefences(String keyname) { SharedPreferences sharedPreferences=context.getSharedPreferences(settingString, Context.MODE_WORLD_READABLE); String resultString= sharedPreferences.getString(keyname, ""); return resultString; } }
SharedPreferences.Editor editor=context.getSharedPreferences(settingString, Context.MODE_WORLD_READABLE).edit();
B的主程序代码如下:
重点在做了注释的这一行。
package com.example.shareprefenceshareb; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { Button btn,btn1; EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.btn); btn1=(Button)findViewById(R.id.btn1); editText=(EditText)findViewById(R.id.text); Context c=null; try { //com.example.shareprefencesharea 是A的包名 //Context.CONTEXT_IGNORE_SECURITY 忽略安全检查标志 c = createPackageContext("com.example.shareprefencesharea", Context.CONTEXT_IGNORE_SECURITY); } catch (SecurityException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } final SharedPrefencesImp imp=new SharedPrefencesImp(c); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String result= imp.GetSharedPrefences("info"); Toast.makeText(MainActivity.this, result, 0).show(); } }); } }
SharePrefencesImp的代码如下:
package com.example.shareprefenceshareb; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager.NameNotFoundException; public class SharedPrefencesImp { private Context context; private String settingString="SharedPrefencesXml"; public SharedPrefencesImp(Context context) { this.context=context; } /** * 获取sharedprefences中key为keyname的值 * @param keyname * @return */ public String GetSharedPrefences(String keyname) { SharedPreferences sharedPreferences=context.getSharedPreferences(settingString, context.MODE_PRIVATE); String resultString= sharedPreferences.getString(keyname, ""); return resultString; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。