@Override public List<Wifi> getWifiList() { super.getWifiList(); // find wifi passwords List<Wifi> result = new ArrayList<>(); for (String ssid : mWifiIds) { Wifi wifi = new Wifi(ssid); try { String mode = ""; String prefix = grep(cacheNVRam, "ssid=" + wifi.SSID())[0].split("_ssid")[0]; String[] items = grep(cacheNVRam, prefix + "_security_mode"); if (items.length > 0) { mode = items[0].split("=")[1]; } if (mode.contains("wpa")) { items = grep(cacheNVRam, prefix + "_wpa_psk="); if (items.length > 0) { wifi.setPassword(items[0].split("=")[1]); } } result.add(wifi); items = grep(cacheNVRam, prefix + "_closed="); if (items.length > 0) { wifi.setBroadcast(items[0].equals(prefix + "_closed=0")); } items = grep(cacheNVRam, prefix + "_radio="); if (items.length > 0) { wifi.setEnabled(items[0].equals(prefix + "_radio=1")); } } catch (Exception ex) { Log.e(TAG, "Could not determine wifi password: " + ex.getMessage()); } } return result; }
@Override public void setWifiPassword(Wifi wifi, String newPassword) { try { String mode = ""; String prefix = grep(cacheNVRam, "ssid=" + wifi.SSID())[0].split("_ssid")[0]; if (grep(cacheNVRam, prefix + "_security_mode=").length > 0) { mode = grep(cacheNVRam, prefix + "_security_mode=")[0].split("=")[1]; } if (mode.contains("wpa")) { super.setWifiPassword(wifi, newPassword); return; } else Log.w(TAG, "setWifiPassword(): doesn't work in " + mode + " mode"); } catch (Exception ex) { Log.e(TAG, "setWifiPassword: " + ex.getMessage()); } Toast.makeText(mContext, R.string.password_change_failed, Toast.LENGTH_LONG).show(); }
@Override public void reboot() { restore_from_backup(); super.reboot(); }
@Override public void initialize() { refreshCronCache(); super.initialize(); }