0

edittextpreference から、SMS を受信して​​いるブロードキャストレシーバーにデータを渡したいのですが... どうすればそれを行うことができますか...次のコードは私が行っていることを表していますが、うまくいきません....

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 レシーバーでテキストを取得したい....

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上記のように、から のインスタンスを取得します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 に答える