我有以下连接侦听器类
public class connectionListener{
public ConnectivityManager conMgr;
public htmlParserListener vystrahyListener;
public htmlParserListener podmienkyListener;
private ConnectivityBroadcastReceiver mReceiver;
public connectionListener(ConnectivityManager conMgr, htmlParserListener vystrahyListener, htmlParserListener podmienkyListener){
this.conMgr = conMgr;
this.vystrahyListener = vystrahyListener;
this.podmienkyListener = podmienkyListener;
}
private class ConnectivityBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("connected");
}
}
public synchronized void startListening(Context context) {
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
context.registerReceiver(mReceiver, filter);
System.out.println("start");
}
}
我使用此代码(来自MainActivity)实例化它:
connectionListener conLst = new connectionListener(conMgr, vystrahyListener, podmienkyListener);
conLst.startListening(this);
然而,我正在开始"开始"在输出,所以startListening方法工作,但我没有得到"连接"当我禁用或启用移动数据时。所以看起来我的BroadcastReceiver无法正常工作。我做错了什么?
先谢谢
答案 0 :(得分:1)
禁用或启用移动数据时,我无法“连接”。
这是正确的。启用或禁用移动数据时,不会触发此Broadcast
,但仅在网络连接发生更改时才会触发。{/ p>
所以看起来我的BroadcastReceiver无法正常工作。我做错了什么?
您的BroadcastReceiver
工作正常。但是,您希望CONNECTIVITY_ACTION
Broadcast
在未触发的情况下触发。
注意:当移动数据的启用状态发生变化时,系统不会发送(其他)Broadcast
。您也无法为此更改注册Listener
。