【问题标题】:use sharedpreferenced in broadcast receiver在广播接收器中使用共享首选项
【发布时间】:2013-10-12 19:15:36
【问题描述】:

我开发了一个应用程序,它有一个活动和一个广播接收器。我想以一种可以使用活动中设置的设置的方式设置广播接收器。

我使用下面的代码及其在两个活动之间的工作,但在活动和广播接收器之间无法捕获设置。

这里是我保存 avtivity 的代码:

private void savePreferences(String key, String value) {
    SharedPreferences sp = PreferenceManager
            .getDefaultSharedPreferences(this);
    Editor edit = sp.edit();
    edit.putString(key, value);
    edit.commit();
}

广播接收器中的这段代码:

 @Override
    public void onReceive(Context context, Intent intent) {

     Bundle extras = intent.getExtras();




        SharedPreferences sp = context.getSharedPreferences("myPrefs", 
                Context.MODE_PRIVATE);
        String Password = sp.getString("PASSWORD", "1234");

         int duration = Toast.LENGTH_LONG;
            Toast toast = Toast.makeText(context, 
                         "password is"+Password, duration);
            toast.show();
  }

【问题讨论】:

  • 您是否尝试在 onReceive 中使用PreferenceManager .getDefaultSharedPreferences(context); 初始化sp
  • 是的,我初始化那个...

标签: android android-activity broadcastreceiver sharedpreferences


【解决方案1】:

您的接收器正在使用一个名为“myPrefs”的文件,但您在 Activity 中设置首选项时使用的是默认文件名。

使用这个打开一个名为“myPrefs”的特定首选项文件

SharedPreferences sp = context.getSharedPreferences("myPrefs", 
            Context.MODE_PRIVATE);

或者这个打开默认文件

SharedPreferences sp = PreferenceManager
        .getDefaultSharedPreferences(this);

但不是两者的混合,因为它们引用不同的首选项文件。

【讨论】:

  • 你能告诉我如何编辑“private void savePreferences(String key, String value)”方法吗?
  • 添加到上面的答案。
  • 当我使用“SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(this);”时确定在广播接收器中它给出了一些错误!
  • 另外,如果您有错误,说明错误是什么会很有帮助。
猜你喜欢
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多