我需要注意android系统中的网络变化并相应地执行特定的活动 .
1)启用WiFi时,执行功能A. 2)启用移动网络时,执行功能B. 3)禁用WiFi并启用移动网络时,停止功能A并启动功能B. 4)禁用移动网络时并启用WiFi,停止功能B并启动功能A. 5)当没有网络可用时,不执行任何功能 .
我尝试使用CONNECTIVITY_CHANGE . 有了这个,我多次得到意图,我也知道它的原因 . 还有另一个问题 . 考虑移动网络是开启的 . 现在,当我启用WiFi时,我启用WiFi 2至3次,此外,移动网络禁用将无法确认 .
我还尝试使用PhoneStateListener.LISTEN_DATA_CONNECTION_STATE注册 . 它几乎可以工作,但是,当WiFi和移动网络都打开时,我知道WiFi将处于活动状态,当我关闭WiFi时,有时我会收到支持移动网络的消息,有时我不会 .
我需要解决这个问题 . 请帮助我提供指导 .
4 回答
所以实际上你有四种状态(如果互联网存在与否则为第五种)
当网络可用时,您必须通过监控Wifi和移动网络的状态来检查互联网提供商,您的四种状态是
Wifi改变状态和
1. Mobile network is enabled 2. Mobile network is disabled
移动网络改变状态和
1. Wifi is enabled 2. Wifi is disabled
首先,您必须监控互联网是否可用,此后您必须添加类似的两个监听器(广播接收器)以进行Wifi状态更改和移动状态更改并检查所需状态,我已添加状态检查方法下面,
Reciever Implementation
实现两个,移动和wifi状态更改广播接收器,并更好地添加这样的状态检查方法
Check State
并从3 Wifi,Internet和移动数据更改接收方调用此方法,不要忘记检查oldState并将其与更改后的状态匹配 .
移动旧州
对于Wifi状态
由于Wifi改变状态,如TurnOn和TurningOf由操作系统触发,因此不止一次调用Wifi发生更改,你必须取消它们,就像我上面所做的那样
现在只监控启用和禁用 .
您可以尝试注册广播接收器以注意网络更改 . 见:http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html .
小心,状态可以改变太多次,每次你的广播都会被触发 .
在应用程序的第一个活动中尝试此代码 .
请记住:您的广播接收器将在每次网络状态更改时由Android触发 .