1

さまざまなアプローチを試してみましたが、残念ながら、ブロードキャストに渡すインテントの性質についてまだ混乱しているため、少しのガイダンスを期待していました...

ブロードキャストを送信する必要があるアプリケーションがあり、これらの受信者は、現在実行中のアプリのアクティビティです。

だから...私のブロードキャストは現在このようになっています(ここでクラス定義のポイントが何であるかはまだ不明です...特定のものをターゲットにするつもりですか?)しかし、アクティビティでは聞こえません。

私のアプリケーションは現在、次のようなブロードキャストを送信しようとしています:

Intent intent = new Intent(
getPackageName() + ".FOO");//FOO is one of the 7 or so possible Activities that are in the overall app... I don't *want to name it perse, I just don't know what to replace it with 
intent.putExtra("com.mything.somethingSpecial", "TIME TO PARTY");
sendBroadcast(intent);

次に、さまざまなアクティビティで、次のようなローカル BroadcastReciever があります。

private BroadcastReceiver receiver = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
        //do stuff
   };
}

そして onResume 、 onPause のもの...

@Override
public void onPause{
  this.unregisterReceiver(this.receiver);
}

@Override
public void onResume(){
   super.onResume();
   IntentFilter filter = new IntentFilter();
   filter.addAction("com.mything.somethingSpecial");
   this.registerReceiver(this.receiver, filter);

 }

だから、現時点では、ブロードキャストが送信されています(私は思う...私はそれを確認する方法も知らないと思いますが、例外は発生していないので、それは消えていると思います)が、アクティビティはそのコード ブロックに入っていません。

4

2 に答える 2

0

ああ!

私はそれを理解しました...後世のために答えます...

ブロードキャストをに変更しました

 Intent intent = new Intent();
 intent.setAction("com.mything.somethingSpecial");
 sendBroadcast(intent);

そしてビンゴ。

于 2013-01-23T10:46:07.003 に答える
0

このようにしてください

 Intent intent = new Intent("com.mything.somethingSpecial.Broadcast"); 
 intent.putExtra("com.mything.somethingSpecial", "TIME TO PARTY");
 sendBroadcast(intent);

その後

@Override
public void onPause{
  this.unregisterReceiver(this.receiver);
}

@Override
public void onResume(){
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction("com.mything.somethingSpecial.Broadcast");
this.registerReceiver(this.receiver, filter); 
}
于 2013-01-23T10:50:01.463 に答える