私はこのアプリを持っています。このアプリでは、アクティビティ内の特定の変数を更新し、このアクティビティはBroadcastReceiverを使用して新しい変数をIntentServiceに渡します。しかし、IntentServiceのBroadcastReceiverはブロードキャストを受信していないようです。これは、サービス内のコードがブロードキャストを受信していないサービス内のBroadcastReceiver Android
protected class UpdateReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent){
Log.d("receiver", "Got message: ");
//state=3;
//Toast.makeText(context, "got it", Toast.LENGTH_SHORT).show();
}
};
を放送受信機を作成し、ここに
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("updates");
UpdateReceiver lol = new UpdateReceiver();
DetectService.this.registerReceiver(lol, intentFilter);
が最後にここにブロードキャストを送信するためのコードですonHandle()関数の中で、レシーバを登録するためのコードだことです私は放送部分と同じ活動に受信機を置く活動
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("updates");
HomePageActivity.this.sendBroadcast(broadcastIntent);
Log.d("sender", "send msg");
から、それは動作しますが、私はIntentServiceに入れていないとき。助けてください!
ブロードキャストはすべてローカルですが、eclipseは互換性クラスをインポートできないように見えるため、このプロジェクトでLocalBroadcastManagerを使用してみました。 Android SDKマネージャを使用してインストールしました。私がここで間違っていることはありますか?
マニフェストで受信者を宣言していますか? – dldnh
ok放送局と同じアクティビティに受信機を入れてマニフェストに登録すると、受信機は受信しますが、プログラムもクラッシュします。ここでの注釈は、マニフェストまたは電子プログラムのいずれかに登録することを暗示するように見えますが、両方ではありません。 http://developer.android.com/reference/android/content/Context.html#registerReceiver(android.content.BroadcastReceiver、android.content.IntentFilter) –