1

如果 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>
4

2 回答 2

4

看看这个方法。这将返回设备连接到的网络名称。如果设备未连接到任何设备,则它将返回“无”。根据您的需要,将字符串名称更改为布尔 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" />

它应该工作。但是,如果您需要有关此方法的更多详细信息,请阅读此

此外,您可以尝试从以下位置探索枚举:

NetworkInfo.DetailedState

它们描绘了许多您可能会觉得有用的各种状态。

于 2013-06-29T08:12:30.333 回答
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

于 2013-06-29T08:06:55.957 回答