添加小计时器到活动,直到wifi重启?

时间:2013-10-03 09:46:00

标签: android android-wifi

我正在开发一个在wifi上切换的Android应用程序,当它打开时会执行进一步处理..

wifiManager.setWifiEnabled(true);

但条件......

wifiEnabled = wifiManager.isWifiEnabled();


if(wifiEnabled )
{ ...... }

总是返回False,因为wifi需要时间重新连接 我怎么等到它重新启动或实际连接到wifi网络..

我知道我可以用来检查它是否真正连接或连接的条件。

Boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
Boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected();

我的两个问题?

1-等待启用wifi,即切换开启? 2-等待它实际连接到wifi网络?

2 个答案:

答案 0 :(得分:2)

  

1-等待启用wifi,即切换开? 2-等待它   实际连接到wifi网络?

您可以为这两个事件创建BroadcastReceiver,然后执行特定操作:

public class WifiStateReceiver extends BroadcastReceiver {

   // action for Wi-Fi device status changes (enabled, disabled etc.)
   if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {

      // get actual status of Wi-Fi
      int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 
                                     WifiManager.WIFI_STATE_UNKNOWN);

     if (state == WifiManager.WIFI_STATE_ENABLED) {
        // do your stuff
     }

     ...

     // similar for WIFI_STATE_DISABLED
   }

   // action for connectivity changes (connected, disconnected etc.)
   if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {

      NetworkInfo ni = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);

      if (ni.getState().equals(NetworkInfo.State.CONNECTED)) {
         // do your stuff if is connected
      }

      ...

      // similar for DISCONNECTED
   }
}

如果您想了解更多连接状态(连接,获取IP地址等),您需要使用:

networkInfo.getDetailedState();

这还取决于设备上的实际API级别。

最后,您需要为BroadcastReceiver提供这些Intent过滤器:

<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />

<强>参考文献:

答案 1 :(得分:0)

如果您确实需要WIFI连接来继续使用您的应用逻辑,则必须等待。说,你可以创建一个AsyncTask来处理“等待”的情况。 AsyncTask会显示ProgressDialog,表示无线连接状态。

如果用户必须手动切换wifi,AsyncTask将在 wifiEnabled = true 之后运行,并在manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected() == true时停止。

我不知道这个答案对你有帮助,但这是我对你问题的解释 小心,希望它有所帮助。