標籤雲

搜尋此網誌

2012/07/26

從 app 外讀取 SharedPreferences

Service 啟動後會由 BroadcastReceiver 的 onReceive 來處理
但是如果在這裡有需要取得原本 app 的 SharedPreferences 該怎麼辦...
BroadcastReceiver 並不是 app 的 Activity 阿
還好可以使用這個方法

Context pkgContext = null;
try {
 pkgContext = context.createPackageContext("要被讀取的 package 名稱", Context.MODE_WORLD_READABLE);
} catch (NameNotFoundException e) {
 e.printStackTrace();
}
SharedPreferences pref = pkgContext.getSharedPreferences("你的 SharedPreferences 檔案名稱", Context.CONTEXT_IGNORE_SECURITY);

利用 Context 的 createPackageContext 方法
先取得一個原本 app 的 application Context 物件
(這樣一來就可以使用原本 app 的 Resources 或是 ClassLoader 之類的)
再透過這個 context 去 getSharedPreferences 就可以了

沒有留言: