/** * Configure a network, and connect to it. * * @param wifiMgr * @param scanResult * @param password Password for secure network or is ignored. * @return */ public boolean connectToNewNetwork( ScanResult scanResult, String password, int numOpenNetworksKept) { final String security = ConfigSec.getScanResultSecurity(scanResult); if (ConfigSec.isOpenNetwork(security)) { checkForExcessOpenNetworkAndSave(numOpenNetworksKept); } WifiConfiguration config = new WifiConfiguration(); config.SSID = convertToQuotedString(scanResult.SSID); config.BSSID = scanResult.BSSID; ConfigSec.setupSecurity(config, security, password); int id = -1; try { id = mWifiManager.addNetwork(config); } catch (NullPointerException e) { Log.e(TAG, "Weird!! Really!! What's wrong??", e); } if (id == -1) { return false; } if (!mWifiManager.saveConfiguration()) { return false; } config = getWifiConfiguration(config, security); if (config == null) { return false; } return connectToConfiguredNetwork(config, true); }
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; }