Android - 获取从活动到广播接收器的偏好

时间:2012-01-18 13:30:03

标签: java android broadcastreceiver android-preferences

我正在开发Android应用,但我遇到了问题。当我尝试从我的Activity中获取已保存的首选项并在BroadcastReceiver中使用它时,它告诉我我正在寻找的字符串不存在。

这是我在Activity中保存首选项的方法:

private void SavePreferences(String key, String value) {                         
  SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putString(key, value);
  editor.commit();
}

这就是我尝试在BroadcastReceiver中获取偏好的方式:

String pref = PreferenceManager.getDefaultSharedPreferences(context)
  .getString("MEM1", "Does not exist");

MEM1是我之前保存过的字符串。

我的问题是,当我阅读pref时,我的默认值为Does not exist,而不是我的偏好值(MEM1)。有人能指出我出错的地方吗?

2 个答案:

答案 0 :(得分:1)

Activity.getPreferences(mode);

返回特定于该Activity的SharedPreferences实例(例如,支持它的XML文件将被命名为与活动相同),而默认共享首选项特定于该应用程序(XML名称将基于你的包裹名称)。

每次检索SharedPreferences时都提供自定义文件名,或者坚持使用默认文件名。

答案 1 :(得分:0)

你应该使用..

private void SavePreferences(String key, String value){

        SharedPreferences sharedPreferences = getPreferences("my_prefs", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(key, value);
        editor.commit();
       }

然后

String pref = getSharedPreferences("my_prefs", MODE_PRIVATE).getString("MEM1", "Does not exist");

还要确保你的钥匙是正确的。