2011-03-15 31 views
1

サービスのコンテキストでブロードキャスト受信を取得する方法はありますか? マニフェストファイルにreceiverインテントフィルタを追加しようとしましたが、もちろんAndroidは毎回そのサービスをインスタンス化しようとし、例外がスローされます。サービス中のブロードキャストの受信

どうすればいいですか?

は(私はAndroid上で完全なのnoob午前言及したのか?)

答えて

3

サービスコンテキストで放送受信を取得する方法はありますか?

直接ではありません。 ServiceregisterReceiver()を介してBroadcastReceiverを動的に登録することができます。または、startService()を介してマニフェストに登録されたBroadcastReceiverServiceに「転送」することができます。

+0

素晴らしい!私は欠けている部分を見つけ出す。正しい方向に私を指してくれてありがとう! – jldupont

+0

こんにちはCommonsWareとjldupont、サービスクラスとマニフェストファイルの変更を追加するためのコードスニペットを教えてください。私はそれを解決することができません。私は私のサービスクラスに新しいメンバーBroadcastReceiverクラスを作成し、次にCONNECTIVITY_ACTIONのインテントフィルターを使ってブロードキャストレシーバーインスタンス化オブジェクトを登録しました。次に、 " のような新しいレシーバでマニフェストファイルを更新しました。 /インテントフィルター> "となります。 –

1

Androidは、登録されている特定のインテントを処理するサービスをインスタンス化します。サービスが実行されている場合、現在の操作が完了するとすぐに処理のためにインテントがエンキューされます。ブロードキャストを視聴するには、BroadcastReceiverを登録し、あなたのサービスに表示されているものを転送します。

サービスが例外をスローしている場合は、何か問題があります。アプリの例外の完全なスタックトレースを投稿します。これは、adbとlogcatをhereとして、またはEclipseのlogcatビューで見ることができます。