gpt4 book ai didi

android - 为什么在第二个应用程序中不调用 onSharedPreference?

转载 作者:行者123 更新时间:2023-11-30 04:43:05 25 4
gpt4 key购买 nike

我已经阅读了有关 SharedPreferences 的所有文档,我有一个具有全局配置的应用程序,所有应用程序都希望在发生更改时随意读取。我可以读取 SharedPreference,但如何注册它的 ChangeListener?

//应用1

sharedPreferences = getSharedPreferences("my.test.Config_preferences", Context.MODE_WORLD_READABLE)     
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {

public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
Log.i("TAG", "!!! App1 OnPreferenceChanged()"); //WORKING!
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);

//应用2

otherAppsContext = createPackageContext("my.test.Config", 0);
sharedPreferences = otherAppsContext.getSharedPreferences("my.test.Config_preferences", Context.MODE_WORLD_READABLE);
String s = sharedPreferences.getString("Name", "0"); //OK value


listener = new SharedPreferences.OnSharedPreferenceChangeListener() {

@Override
public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
Log.i("TAG", "@@@ App2 OnPreferenceChanged()");
//NOT WORKING!
}
};
sharedPreferences.registerOnSharedPreferenceChangeListener(listener);

最佳答案

这不是一个好的实现。

首先,一旦用户卸载 my.test.Config_preferences,您所有的应用程序都会失去他们的首选项。

其次,设备上的每个应用程序都可以读取这些首选项——而不仅仅是你的——这对安全和隐私不利。

请给每个应用程序自己的 SharedPreferences。或者,如果需要一组集中的首选项(例如,应用程序和插件模型),请通过您可以通过权限保护的内容公开首选项数据,例如使用 AIDL 的远程服务或内容提供商。

关于android - 为什么在第二个应用程序中不调用 onSharedPreference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5590606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com