我正在服务中实现一个广播接收器,该服务应该是在监听互联网连接的可用性。该服务从应用程序的主要活动开始。问题是广播监听器实际上并没有听任何东西。我的代码是:
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 :(得分:1)
我快速搜索了所有可用的意图,看起来你想要做的事情不能被识别为意图(因此被BroadcastReceiver检测到)
尝试使用PhoneStateListener类。
应该有很多使用该类的例子,你应该注意这个onDataConnectionStateChanged()回调方法,以及这个LISTEN_DATA_CONNECTION_STATE标志......或类似的东西。
答案 1 :(得分:0)
您应该将BroadcastReceiver
分解为自己的类,并在清单中注册。否则,只有在Service
启动后才能注册。有关这方面的更多详细信息,请访问:http://developer.android.com/reference/android/content/BroadcastReceiver.html
如果没有详细解释“广播听众无法正常工作”的含义,很难进一步提供帮助。