/** * 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); }
/** * 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); }