WiFi状态变化

时间:2013-06-29 07:57:16

标签: android

如果启用了WiFi,我正尝试将布尔值设置为true。我通过广播接收器的实现获取连接状态。但是,布尔值不止一次被设置为true。你能帮助我解决这个问题吗?我希望布尔值仅在连接WiFi时设置为true,并且仅在WiFi断开时设置为false。代码如下:

NetworkInfo info = (NetworkInfo) ((ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE))
                .getActiveNetworkInfo();
        if (info != null) {
            Log.d("wifiRun", "Network available");
            ConnectivityManager conMan = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo.State wifi = null;
            if (conMan.getNetworkInfo(1).isAvailable())
                wifi = conMan.getNetworkInfo(1).getState();
            if (wifi == NetworkInfo.State.CONNECTED) {
                    //|| wifi == NetworkInfo.State.CONNECTING) {
                wifiState = true;
                Log.d("wifiRun", "wifiState: " + wifiState);

            } else {
                wifiState = false;
                Log.d("wifiRun", "wifiState: " + wifiState);
            }
        }

清单:

<receiver android:name="com.aws.BatteryUsage.ServiceDefinition">
<intent-filter>
          <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
     </intent-filter>
        </receiver>

2 个答案:

答案 0 :(得分:3)

看看这个方法。 Thiw将返回设备所连接的网络名称。如果设备未连接,则返回“无”。根据您的需要,可以很容易地将String名称更改为boolean isConnected。它对我有用。

public String getWifiName(Context context) {
    String ssid = "none";
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    if (WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState()) == NetworkInfo.DetailedState.CONNECTED) {
        ssid = wifiInfo.getSSID();
    }
    return ssid;
}

这需要AndroidManifest.xml中的权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

它适合你。但是,如果您需要有关此方法的更多详细信息,请read it here

此外,您可以尝试浏览以下内容:

  

NetworkInfo.DetailedState

他们描绘了许多你可能觉得有用的州。

答案 1 :(得分:0)

 WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
 if (wifi.isWifiEnabled()){
  //wifi is enabled
  return true;
 }else{
  return false;
 }

参考http://developer.android.com/reference/android/net/wifi/WifiManager.html