读、写其他应用的SharedPreferences

读取其他程序的SharedPreferences一般步骤:
通过CreatPackageContext()创建其他程序对应的Context
通过这个Context的getSharedPreferences()方法获取对应的SharedPreferences对象
如果需要写入数据,调用SharedPreferences的edit()方法获取对应的Editor对象
3个访问必需条件
共享者需要将SharedPreferences的访问模式设置为全局读或写
访问者需要知道共享者的包名称和SharedPreferences名称
访问者需要确切知道每个数据的名称和数据类型,用以正确读取数据

读、写其他应用的SharedPreferences
 Context myContext=null;//生成全局变量
SharedPreferences perfer;
SharedPreferences.Editor editor;

myContext=createPackageContext("cn.edu.zwu.tel",Context.CONTEXT_IGNORE_SECURITY);//注意这句要进行异常处理,访问者需要知道共享者的包名称
perfer=myContext.getSharedPreferences("lgs000", Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE); //第一个参数是得到那个文件,第二个参数是可以对文件可读可写
editor=perfer.edit();//创建可编辑对象

perfer.getString("name",null)//读显示内容

editor.putString("name", zh);//写入内容
editor.commit();//每次写完要注意保存

具体代码:

View Code
 1 package cn.zj.nb.wl;
2
3 import android.app.Activity;
4 import android.content.Context;
5 import android.content.SharedPreferences;
6 import android.content.pm.PackageManager.NameNotFoundException;
7 import android.os.Bundle;
8 import android.util.Log;
9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.widget.Button;
12 import android.widget.EditText;
13 import android.widget.Toast;
14
15 public class SharedPreTest02Activity extends Activity {
16 Context myContext=null;
17 SharedPreferences perfer;
18 SharedPreferences.Editor editor;
19 EditText edtzh,edtmm,edtdh;
20 Button btngg,btndq;
21 Toast toast;
22 // int mode=MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE;
23 @Override
24 public void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.main);
27 try {
28 myContext=createPackageContext("cn.edu.zwu.tel",Context.CONTEXT_IGNORE_SECURITY);
29 } catch (NameNotFoundException e)
30 {
31 e.printStackTrace();
32 }
33
34 perfer=myContext.getSharedPreferences("lgs000", Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE);
35 editor=perfer.edit();
36 edtzh=(EditText)findViewById(R.id.edtzh);
37 edtmm=(EditText)findViewById(R.id.edtmm);
38 edtdh=(EditText)findViewById(R.id.edtdh);
39 btngg=(Button)findViewById(R.id.btngg);
40 btndq=(Button)findViewById(R.id.btndq);
41
42 btngg.setOnClickListener(myListener);
43 btndq.setOnClickListener(myListener);
44 }
45 OnClickListener myListener=new OnClickListener() {
46 @Override
47 public void onClick(View v) {
48 String zh=edtzh.getText().toString();
49 String mm=edtmm.getText().toString();
50 String dh=edtdh.getText().toString();
51 switch(v.getId())
52 {
53 case R.id.btndq:
54 if(perfer.contains("account")&&perfer.contains("password")&&perfer.contains("phone"))
55 {
56 edtzh.setText(perfer.getString("account",null));
57 edtmm.setText(perfer.getString("password",null));
58 edtdh.setText(perfer.getString("phone",null));
59 }
60 else
61 {
62 toast=Toast.makeText(SharedPreTest02Activity.this,
63 "配置信息不存在或不完整!", 5000);
64 toast.show();
65 }
66 return;
67 case R.id.btngg:
68 editor.putString("account", zh);
69 editor.putString("password", mm);
70 editor.putString("phone", dh);
71
72 Log.v("Cat",zh);
73 editor.commit();
74 toast=Toast.makeText(SharedPreTest02Activity.this,
75 "你的帐号:"+zh+
76 " 密码:"+mm+
77 " 电话:"+dh, 5000);
78 toast.show();
79 edtzh.setText("");
80 edtmm.setText("");
81 edtdh.setText("");
82 return;
83 }
84
85 }
86 };
87 }

效果图:

出现一个问题:当在写入数据时,原来的xml文件的内容并没有改变,Logcat输出:ApplicationContext Couldn‘t Rename fill data/data .../shared_prefs

这个app潮流公众帐号主要是推荐给手机用户最近最潮的软件,让大家随时跟上时尚。我们会提供给你们最好的服务,喜欢我们就帮我们推荐吧!

原文地址:https://www.cnblogs.com/shaoyangjiang/p/2385349.html