将数据从活动传递到BROADCAST接收器

时间:2012-04-07 01:07:35

标签: android

我想将一些来自edittextpreference的数据传递给我正在接收短信的广播记录....我怎么能这样做......下面的代码代表了我一直在做的但不起作用...... / p>

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接收器中的文本以匹配传入消息中的某些单词....

1 个答案:

答案 0 :(得分: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获得PreferenceManager的实例。

EDIT2:extras作为名称 - 值集合存储在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