android.net.wifi.STATE_CHANGE:未在Wifi断开连接时触发

|| 当Wifi连接恢复时,仅具有动作
NETWORK_STATE_CHANGED_ACTION
(其常量值为
android.net.wifi.STATE_CHANGE
)的广播意图是否正常?即无线网络断开连接时,我没有这个意图。 更新:我最感兴趣的是> = 2.2 Froyo     
已邀请:
  公共静态最终字符串   SUPPLICANT_CONNECTION_CHANGE_ACTION      由于:API级别1      广播意图   指示与   请求者已经成立   (现在可以执行   Wi-Fi操作)或与   请求者已经丢失。一   extra提供连接状态为   布尔值,其中true表示已连接。      也可以看看      EXTRA_SUPPLICANT_CONNECTED      常量值:\“ android.net.wifi.supplicant.CONNECTION_CHANGE \” 在Android的API中,它说检查STATE_CHANGE的网络连接不是一个好主意,而应该使用SUPPLICANT_CONNECTION_CHANGE_ACTION。这将通知建立wifi网络,并断开wifi网络。我不知道这是否对您有帮助,但我希望如此。链接     
我的项目中有类似的需求,最终不得不同时使用两者。 android.net.wifi.supplicant.CONNECTION_CHANGE操作在网络连接时发送广播,但通常在设备具有IP地址之前发送广播,因此我需要android.net.wifi.STATE_CHANGE操作。 android.net.wifi.STATE_CHANGE操作仅在设备与网络断开连接但未启用wifi时(例如,热点超出范围时)才接收断开连接的广播 因此,您应该在清单中将接收者的两个动作都放入:
<receiver android:name=\"net.moronigranja.tproxy.WifiReceiver\">
            <intent-filter>
                    <action android:name=\"android.net.wifi.STATE_CHANGE\"/>
                    <action android:name=\"android.net.wifi.supplicant.CONNECTION_CHANGE\" />
            </intent-filter>
</receiver>
然后您是否要检查意图中正在调用哪个动作。这是我的代码中BroadcastReceiver的onReceive方法:
public void onReceive(Context c, Intent intent) {
      if(intent.getAction().equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)){ 
          boolean connected = intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false);
          if(!connected) {
               //Start service for disconnected state here
          }
      }

      else if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
          NetworkInfo netInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
          if( netInfo.isConnected() )
          {
              //Start service for connected state here.
          }   
      }
  }
    

要回复问题请先登录注册