• 读、写其他应用的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潮流公众帐号主要是推荐给手机用户最近最潮的软件,让大家随时跟上时尚。我们会提供给你们最好的服务,喜欢我们就帮我们推荐吧!

  • 相关阅读:
    SQL 多列合并一列
    jQuery Ajax post多个值传参
    jquery获取select选中的值
    js 事件对象
    有关cookie
    事件冒泡和事件捕获
    js事件监听
    阻止浏览器的默认行为
    鼠标拖拽效果
    自定义右键菜单
  • 原文地址:https://www.cnblogs.com/shaoyangjiang/p/2385349.html
Copyright © 2020-2023  润新知