めもです。
想定仕様
ServiceアプリでSharedPreferencesを作成して値を書き込む、ActivityアプリでServiceアプリのSharedPreferencesを読み込む。
ServiceアプリはActivityアプリとは独立して動作している。
コードにするとこんな感じ?
Serviceアプリ側
private SharedPreferences mSharedPref = null;
//(onCreteにて)
mSharedPref = this.getSharedPreferences("data",
Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
//(使いたいところで)
SharedPreferences.Editor editor = mSharedPref.edit();
editor.putString("data", data);
editor.commit();
Activityアプリ側
//(使いたいところで。)
Context service = createPackageContext("com.sample.service",
CONTEXT_RESTRICTED);
SharedPreferences sharedPref = service.getSharedPreferences("data",
Context.MODE_PRIVATE | Context.MODE_MULTI_PROCESS);
String data = sharedPref.getString("data", "");
何が言いたかったかというと、
お互いにContext.MODE_MULTI_PROCESSを設定しないとActivityアプリ側では即時反映された値が取得できなかったので注意。