OnSharedPreferenceChangeListener 在具有 sharedUserID 的应用程序之间实现?
OnSharedPreferenceChangeListener implemented between apps with sharedUserID?
我在 sharedUserId 下有 App A 和 App B。在 App B 中,我想在 A 的 sharedPreferences 发生变化时获取它们。现在我可以获得应用程序 A 的 sharedPreferences,但只能在重新编译时使用。这可能吗?
这是我在应用 B 中尝试的示例:
// get Context of Shared App
sharedContext = this.createPackageContext("com.app.A",Context.CONTEXT_IGNORE_SECURITY);
// get desired preferences from app A
myPrefs = sharedContext.getSharedPreferences(PREFERENCES,Context.MODE_PRIVATE);
// keeping local copy of this listener
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences myPrefs, String key) {
if (key.equals(PREFERENCES)) {
// Do something
Log.d("Test", "preferences were updated");
}
}
};
// register listener
myPrefs.registerOnSharedPreferenceChangeListener(listener);
在每个应用程序的清单中设置 android:process
。
另外 key.equals(PREFERENCES)
应该是要获取的特定首选项的名称,key.equals("key:example")
而不是共享首选项的名称。
我在 sharedUserId 下有 App A 和 App B。在 App B 中,我想在 A 的 sharedPreferences 发生变化时获取它们。现在我可以获得应用程序 A 的 sharedPreferences,但只能在重新编译时使用。这可能吗?
这是我在应用 B 中尝试的示例:
// get Context of Shared App
sharedContext = this.createPackageContext("com.app.A",Context.CONTEXT_IGNORE_SECURITY);
// get desired preferences from app A
myPrefs = sharedContext.getSharedPreferences(PREFERENCES,Context.MODE_PRIVATE);
// keeping local copy of this listener
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences myPrefs, String key) {
if (key.equals(PREFERENCES)) {
// Do something
Log.d("Test", "preferences were updated");
}
}
};
// register listener
myPrefs.registerOnSharedPreferenceChangeListener(listener);
在每个应用程序的清单中设置 android:process
。
另外 key.equals(PREFERENCES)
应该是要获取的特定首选项的名称,key.equals("key:example")
而不是共享首选项的名称。