インターネット接続の可用性をリスンする予定のサービス内にブロードキャスト受信機を実装しています。サービスは、アプリケーションの主なアクティビティから開始されます。問題は、ブロードキャストリスナーが実際には何も聞いていないということです。私のコードは次のとおりです。サービスからインターネットに接続するためのブロードキャスト受信機
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");
}
リスナーが実際に何かをしていることを示唆するために、logcatからさえも得られません。 – JustCurious
SEND_DATA_BROADCASTを受け取ることはないと言っていますか?それはいつ送られますか?あなたのサービスが始まったことを確信していますか?カスタムのStringに設定されているため、システムでブロードキャストされるイベントではありません。これらのリストは、http://developer.android.com/reference/android/content/Intent.html – elevine
でご覧になれます。このクラスのブロードキャストされた定数のいくつかに興味があるかもしれません。 android.com/reference/android/net/ConnectivityManager.html – elevine