如何在BroadcastReceiver中获取主要活动的SharedPreferences?

时间:2013-06-27 20:26:14

标签: android

我正在尝试制作一个扩展广播接收器类的SMS接收器类。如何从SMS Receiver类中的MainActivity获取共享首选项。例如,如果我想要检查UI中的复选框,我的程序将生成自动循环。那么我怎么能基本上从MainActivity获得这些信息我认为有可能使用sharedpreferneces但我无法找到任何方法来做到这一点。请给我一个解决这个问题的方法。先感谢您。

1 个答案:

答案 0 :(得分:0)

编辑:我道歉,我误解了BroadcastReceiver的使用。如果我理解正确,当BroadcastReceiver截获Broadcast Intent时,它会调用onReceive方法。这是函数头:

public abstract void onReceive (Context context, Intent intent)

请注意,上下文作为参数传递给此函数。此上下文是接收器运行的上下文。继续尝试使用我在下面指定的方法。以下是我的参考:http://developer.android.com/reference/android/content/BroadcastReceiver.html#onReceive%28android.content.Context,%20android.content.Intent%29

希望这有帮助!

原始邮寄: 一种可能的方法是将应用程序上下文作为SMS Receiver类的构造函数参数传递:

public SMSReceiver(Context context, ...[other args]){
    this.context = context;
    //Rest of constructor code
}

然后当您在活动中实例化SMS Receiver时:

SMSReceiver receiver = new SMSReceiver(this, ...[other args]);

通过此上下文,您可以获得共享首选项。

Preferences preferences = context.getSharedPreferences("NAME", [int Mode]);

用户Pentium10在此链接中提供了有关首选项访问的非常全面的答案: How do I get the SharedPreferences from a PreferenceActivity in Android?

以下是您感兴趣的代码内容(通过一个小编辑来匹配我上面的代码):

import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
// then you use
prefs.getBoolean("keystring", true); //or whatever method you need to retrieve your data