0

我想将edittextpreference中的一些数据传递给正在接收短信的广播接收器......我该怎么做......下面的代码代表我一直在做的事情,但这不起作用......

public class AppPreferences extends PreferenceActivity{

    SharedPreferences prefs;
    @Override
   public void onCreate(Bundle b)
   {
      super.onCreate(b);
       addPreferencesFromResource(R.xml.prefs);

       prefs= PreferenceManager.getDefaultSharedPreferences(this);

      Log.v("",  prefs.getString("Spam", null));
      Bundle ba = new Bundle();
      ba.putString("spam",prefs.getString("Spam",null));
   }

}

同时得到它

                spam=bundle.getString("spam");
Log.v("Bundle", spam);

不起作用...我该怎么做...

很简单,我想从用户输入的 edittextpreference 中获取文本,然后我想在 BoradCast Receiver 中获取文本以匹配传入消息中的某些单词....

4

1 回答 1

0

如果数据位是首选项,则必须从Preferences对象的接收器中获取它:

import android.content.SharedPreferences;
import android.preference.PreferenceManager;

//...

public void onReceive(Context Ctxt, Intent in)
{
    //...
    SharedPreferences Prefs = PreferenceManager.getDefaultSharedPreferences(Ctxt);
    spam = Prefs.getString("spam", "");

编辑:该类没有什么特别之处,除了你不应该直接构造它(如new SharedPreferences())。如上图所示,您可以SharedPreferences从 a中获取实例。PreferenceManager

EDIT2:额外内容作为名称-值集合存储在 Intent 对象中。当您创建一个调用接收器的意图时,您会存储这样的附加信息:

Intent in = new Intent(Ctxt, MyBroadcastReceiver.class);
in.putExtra("foo", "Hello world"); //that's a string extra
in.putExtra("bar", 17); //that's an integer extra

在接收端:

public void onReceive(Context Ctxt, Intent in)
{
    String Foo = in.getStringExtra("foo");
    int Bar = in.getStringExtra("bar");
    //and so forth
于 2012-04-07T01:11:45.167 回答