讀、寫其餘應用的SharedPreferences

讀取其餘程序的SharedPreferences通常步驟:
經過CreatPackageContext()建立其餘程序對應的Context
經過這個Context的getSharedPreferences()方法獲取對應的SharedPreferences對象
若是須要寫入數據,調用SharedPreferences的edit()方法獲取對應的Editor對象
3個訪問必需條件
共享者須要將SharedPreferences的訪問模式設置爲全局讀或寫
訪問者須要知道共享者的包名稱和SharedPreferences名稱
訪問者須要確切知道每一個數據的名稱和數據類型,用以正確讀取數據android

讀、寫其餘應用的SharedPreferences
 Context myContext=null;//生成全局變量
SharedPreferences perfer;
SharedPreferences.Editor editor;app

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();//建立可編輯對象ide

perfer.getString("name",null)//讀顯示內容this

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

具體代碼:code

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     @Override24     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         @Override47         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

出現一個問題:當在寫入數據時,原來的xml文件的內容並無改變,Logcat輸出:ApplicationContext Couldn‘t Rename fill data/data .../shared_prefs對象

緣由:SharedPreTest02Activity和cn.edu.zwu.tel不在同一進程中,不能修改其中的信息,在SharedPreTest02Activity的manifest文件中添加blog

形如進程

<activity ...

    android:process="cn.edu.zwu.tel"  />代碼

相關文章
相關標籤/搜索