2011-07-27 15 views
0

インターネット接続の可用性をリスンする予定のサービス内にブロードキャスト受信機を実装しています。サービスは、アプリケーションの主なアクティビティから開始されます。問題は、ブロードキャストリスナーが実際には何も聞いていないということです。私のコードは次のとおりです。サービスからインターネットに接続するためのブロードキャスト受信機

public class MyService extends Service { 

public final static String SEND_DATA_BROADCAST = "com.myapp.SEND_DATA"; 
private final static String LOG_TAG="-Service-"; 
private BroadcastReceiver updateListener; 

@Override 
public void onCreate() 
{ 
    super.onCreate(); 

    //create listener 

    final IntentFilter theFilter = new IntentFilter(); 
     theFilter.addAction(SEND_DATA_BROADCAST); 
     this.updateListener = new BroadcastReceiver() { 

      @Override 
      public void onReceive(Context context, Intent intent) { 
       // Do whatever you need it to do when it receives the broadcast 
       // Example show a Toast message... 
       Log.d(LOG_TAG,"Listening.."); 
      } 
     }; 

    // register listener 
    Log.d(LOG_TAG,"Registering Listener"); 
    this.registerReceiver(this.updateListener, theFilter); 
    listenerRegistered = true; 
    Log.d(LOG_TAG,"Listener Registered"); 
} 

答えて

0

あなたは独自のクラスに出て、あなたのBroadcastReceiverを破る、そしてあなたのマニフェストに登録する必要があります。それ以外の場合は、Serviceが開始されるまで登録されません。その詳細については、こちらをご覧ください。http://developer.android.com/reference/android/content/BroadcastReceiver.html

「ブロードキャストリスナーが正しく動作しない」という意味の詳細な説明がないと、さらに詳しい説明はできません。

+0

リスナーが実際に何かをしていることを示唆するために、logcatからさえも得られません。 – JustCurious

+0

SEND_DATA_BROADCASTを受け取ることはないと言っていますか?それはいつ送られますか?あなたのサービスが始まったことを確信していますか?カスタムのStringに設定されているため、システムでブロードキャストされるイベントではありません。これらのリストは、http://developer.android.com/reference/android/content/Intent.html – elevine

+0

でご覧になれます。このクラスのブロードキャストされた定数のいくつかに興味があるかもしれません。 android.com/reference/android/net/ConnectivityManager.html – elevine

1

私は可能なすべての意図の迅速な検索を行なったし、あなたがやろうとしているものと思われる意図として識別(ひいてはBroadcastReceiverによって検出)することができない

クラスPhoneStateListenerを使用してみてください。

このクラスを使用する例がたくさんあるはずです。このLISTEN_DATA_CONNECTION_STATEフラグなどと一緒に、このonDataConnectionStateChanged()コールバックメソッドを調べる必要があります。

関連する問題