Exemple #1
0
  public WifiConfiguration getWifiConfiguration(WifiConfiguration configToFind, String security) {
    final String ssid = configToFind.SSID;
    if (ssid.length() == 0) {
      return null;
    }

    final String bssid = configToFind.BSSID;

    if (security == null) {
      security = ConfigSec.getWifiConfigurationSecurity(configToFind);
    }

    final List<WifiConfiguration> configurations = mWifiManager.getConfiguredNetworks();

    for (final WifiConfiguration config : configurations) {
      if (config.SSID == null || !ssid.equals(config.SSID)) {
        continue;
      }
      if (config.BSSID == null || bssid == null || bssid.equals(config.BSSID)) {
        final String configSecurity = ConfigSec.getWifiConfigurationSecurity(config);
        if (security.equals(configSecurity)) {
          return config;
        }
      }
    }
    return null;
  }
Exemple #2
0
  public WifiConfiguration getWifiConfiguration(final ScanResult hotsopt, String hotspotSecurity) {
    final String ssid = convertToQuotedString(hotsopt.SSID);
    if (ssid.length() == 0) {
      return null;
    }

    final String bssid = hotsopt.BSSID;
    if (bssid == null) {
      return null;
    }

    if (hotspotSecurity == null) {
      hotspotSecurity = ConfigSec.getScanResultSecurity(hotsopt);
    }

    final List<WifiConfiguration> configurations = mWifiManager.getConfiguredNetworks();
    if (configurations == null) {
      return null;
    }

    for (final WifiConfiguration config : configurations) {
      if (config.SSID == null || !ssid.equals(config.SSID)) {
        continue;
      }
      if (config.BSSID == null || bssid.equals(config.BSSID)) {
        final String configSecurity = ConfigSec.getWifiConfigurationSecurity(config);
        if (hotspotSecurity.equals(configSecurity)) {
          return config;
        }
      }
    }
    return null;
  }
Exemple #3
0
 /**
  * Change the password of an existing configured network and connect to it
  *
  * @param wifiMgr
  * @param config
  * @param newPassword
  * @return
  */
 public boolean changePasswordAndConnect(
     WifiConfiguration config, String newPassword, int numOpenNetworksKept) {
   ConfigSec.setupSecurity(config, ConfigSec.getWifiConfigurationSecurity(config), newPassword);
   final int networkId = mWifiManager.updateNetwork(config);
   if (networkId == -1) {
     // Update failed.
     return false;
   }
   // Force the change to apply.
   mWifiManager.disconnect();
   return connectToConfiguredNetwork(config, true);
 }
Exemple #4
0
  /**
   * Connect to a configured network.
   *
   * @param wifiManager
   * @param config
   * @param numOpenNetworksKept Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT
   * @return
   */
  public boolean connectToConfiguredNetwork(WifiConfiguration config, boolean reassociate) {
    final String security = ConfigSec.getWifiConfigurationSecurity(config);
    int oldPri = config.priority;
    // Make it the highest priority.
    int newPri = getMaxPriority() + 1;
    if (newPri > MAX_PRIORITY) {
      newPri = shiftPriorityAndSave();
      config = getWifiConfiguration(config, security);
      if (config == null) {
        return false;
      }
    }

    // Set highest priority to this configured network
    config.priority = newPri;
    int networkId = mWifiManager.updateNetwork(config);
    if (networkId == -1) {
      return false;
    }

    // Do not disable others
    if (!mWifiManager.enableNetwork(networkId, false)) {
      config.priority = oldPri;
      return false;
    }

    if (!mWifiManager.saveConfiguration()) {
      config.priority = oldPri;
      return false;
    }

    // We have to retrieve the WifiConfiguration after save.
    config = getWifiConfiguration(config, security);
    if (config == null) {
      return false;
    }

    // ReenableAllApsWhenNetworkStateChanged.schedule(mContext);

    // Disable others, but do not save.
    // Just to force the WifiManager to connect to it.
    if (!mWifiManager.enableNetwork(config.networkId, true)) {
      return false;
    }

    final boolean connect = reassociate ? mWifiManager.reassociate() : mWifiManager.reconnect();
    if (!connect) {
      return false;
    }

    return true;
  }
Exemple #5
0
  /**
   * Ensure no more than numOpenNetworksKept open networks in configuration list.
   *
   * @param wifiMgr
   * @param numOpenNetworksKept
   * @return Operation succeed or not.
   */
  private boolean checkForExcessOpenNetworkAndSave(int numOpenNetworksKept) {
    final List<WifiConfiguration> configurations = mWifiManager.getConfiguredNetworks();
    sortByPriority(configurations);
    boolean modified = false;
    int tempCount = 0;
    for (int i = configurations.size() - 1; i >= 0; i--) {
      final WifiConfiguration config = configurations.get(i);
      if (ConfigSec.isOpenNetwork(ConfigSec.getWifiConfigurationSecurity(config))) {
        tempCount++;
        if (tempCount >= numOpenNetworksKept) {
          modified = true;
          mWifiManager.removeNetwork(config.networkId);
        }
      }
    }
    if (modified) {
      return mWifiManager.saveConfiguration();
    }

    return true;
  }