Android本地存儲(chǔ)SharedPreferences詳解
存儲(chǔ)位置
SharedPreferences數(shù)據(jù)保存在: /data /data/ /shared_prefs 文件夾下,以XML格式保存,根元素為:。文件名稱為獲取SharedPreferences實(shí)例時(shí)傳遞的參數(shù)值。
value
獲取實(shí)例
SharePerferences是一個(gè)接口,Context實(shí)現(xiàn)了API:getSharedPreferences(String, int);這個(gè)API依據(jù)String返回一個(gè)SharePerferences實(shí)例。同樣的String返回的SharePerferences的實(shí)例是同樣的。此處strign指定的是存儲(chǔ)數(shù)據(jù)的xml文件的名稱。
Activity實(shí)現(xiàn)了getPreferences(int),這種方法就是默認(rèn)使用Activity的class name作為String調(diào)用 getSharedPreferences(String, int)。
//指定該SharedPreferences數(shù)據(jù)僅僅能被本應(yīng)用讀、寫。
Context.MODE_PRIVATE
//指定該SharedPreferences數(shù)據(jù)也能被其它應(yīng)用程序讀,但不能寫。
Context.MODE_WORLD_READABLE
//指定該SharedPreferences數(shù)據(jù)也能被其它應(yīng)用程序讀、寫。
Context.MODE_WORLD_WRITEABLE
//文件是否存在,存在那么追加,否則新建
Context.MODE_WORLD_APPEND
讀
//推斷SharedPreferences是否包括特定key的數(shù)據(jù)。
boolean contains(String key)
//獲取SharedPreferences里所有的key-value對(duì)。
Map getAll()
//獲取指定key相應(yīng)的value,假設(shè)key不存在。則返回默認(rèn)值defValue。
Xxx getXxx(String key, Xxx defValue)
寫
SharedPreferences接口本身未提供寫入數(shù)據(jù)的能力,而是通過(guò)其內(nèi)部接口。其調(diào)用SharedPreferences.edit() 方法就可以獲得它所相應(yīng)的 SharedPreferences.Editor對(duì)象。Editor有例如以下向SharedPreferences寫入數(shù)據(jù)的方法:
//清空SharedPreferences里全部數(shù)據(jù)。
Editor.clear()
//向SharedPreferences里存入指定key相應(yīng)的數(shù)據(jù)。
Editor.putXxx(String key, Xxx Value)
//刪除SharedPreferences里指定key相應(yīng)的數(shù)據(jù)項(xiàng)。
Editor.remove(String key)
//當(dāng)Editor編輯完畢后,調(diào)用該方法提交改動(dòng)。
boolean Editor.commit()
讀寫其它應(yīng)用的SharedPreferences
1.創(chuàng)建其它應(yīng)用的相應(yīng) Context。
Context useContext =createPackageContext("package_name",Context.CONTEXT_IGNORE_SECURITY);
2.調(diào)用其它應(yīng)用的 Context的 getSharedPreferences()方法獲取 SharedPreferences對(duì)象。
3.調(diào)用其它應(yīng)用的 SharedPreferences.edit()方法獲得對(duì)應(yīng)SharedPreferences.Editor對(duì)象。