从服务进行互联网连接的广播接收器

时间:2011-07-27 13:27:21

标签: android service android-intent listener broadcastreceiver

我正在服务中实现一个广播接收器,该服务应该是在监听互联网连接的可用性。该服务从应用程序的主要活动开始。问题是广播监听器实际上并没有听任何东西。我的代码是:

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");
}

2 个答案:

答案 0 :(得分:1)

我快速搜索了所有可用的意图,看起来你想要做的事情不能被识别为意图(因此被BroadcastReceiver检测到)

尝试使用PhoneStateListener类。

应该有很多使用该类的例子,你应该注意这个onDataConnectionStateChanged()回调方法,以及这个LISTEN_DATA_CONNECTION_STATE标志......或类似的东西。

答案 1 :(得分:0)

您应该将BroadcastReceiver分解为自己的类,并在清单中注册。否则,只有在Service启动后才能注册。有关这方面的更多详细信息,请访问:http://developer.android.com/reference/android/content/BroadcastReceiver.html

如果没有详细解释“广播听众无法正常工作”的含义,很难进一步提供帮助。