0

我正在尝试制作一个扩展广播接收器类的 SMS 接收器类。如何从该 SMS Receiver 类中的 MainActivity 获取共享首选项。例如,如果我希望我的程序在选中 UI 中的复选框时生成 autosms。那么我如何才能基本上从 MainActivity 中获取这些信息,我认为使用 sharedpreferences 是可能的,但我无法找到任何方法来做到这一点。

4

1 回答 1

0

编辑:对不起,我误解了广播接收器的使用。如果我理解正确,当广播意图被您的广播接收器拦截时,它会调用该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 接收器类的构造函数参数传递:

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

然后当您在活动中实例化 SMS 接收器时:

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
于 2013-06-27T21:23:23.557 回答