X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fde%2Fdhbwloe%2Fcampusapp%2Ffragments%2FWifiSettings.java;h=a9bd972e6f71527e980944b9203d86b6379cdc27;hb=304cb748086811c3c2dc0eaef097e781a7777686;hp=d57671a83f759cb3caceb454c4df1a612a35b84c;hpb=a0f644715b43af1e4acf2513b972c3f980efdaca;p=DHBWCampusApp.git diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java index d57671a..a9bd972 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java @@ -2,20 +2,45 @@ package de.dhbwloe.campusapp.fragments; import android.annotation.TargetApi; +import android.app.ActionBar; +import android.app.Activity; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.res.Resources; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiEnterpriseConfig; +import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; import android.os.Bundle; +import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; +import android.util.Base64; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TableRow; +import android.widget.TextView; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.StringReader; import java.lang.reflect.Field; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.List; +import de.dhbwloe.campusapp.CampusAppContext; import de.dhbwloe.campusapp.CampusAppFragment; import de.dhbwloe.campusapp.R; import de.dhbwloe.campusapp.search.SearchIndices; @@ -26,7 +51,7 @@ import de.dhbwloe.campusapp.search.SearchIndices; public class WifiSettings extends CampusAppFragment { /* implement this for search results ;) */ public static SearchIndices[] GetSearchIndices() { - return new SearchIndices[] { + return new SearchIndices[]{ new SearchIndices("WifiSettings", true) {{ setUpdateTime(1); setTarget("#WifiSettings"); @@ -37,7 +62,376 @@ public class WifiSettings extends CampusAppFragment { }; } + private enum WifiNetworkAuthenticationTypes { + WIFI_AUTHTYPE_NONE, + WIFI_AUTHTYPE_WEP, + WIFI_AUTHTYPE_WPA, + WIFI_AUTHTYPE_WPA_ENTERPRISE, + }; + + private class WifiNetworkSettingsSet { + String name; + String ssid; + WifiNetworkAuthenticationTypes authType; + int[] authAlgorithms; + int eapMethod; + int phase2Method; + + String caCertStr; + String caName; + + String usernameSuffix; + String username; + String password; + + TabLayout.Tab tab; + boolean isInScanResult = false; + + public WifiNetworkSettingsSet(String name, String ssid, WifiNetworkAuthenticationTypes authType) { + this.name = name; + this.ssid = ssid; + this.authType = authType; + } + + public WifiNetworkSettingsSet setWpaEnterprise(int[] authAlgorithms, int eapMethod, int phase2Method, String username) { + this.authAlgorithms = authAlgorithms; + this.eapMethod = eapMethod; + this.phase2Method = phase2Method; + this.username = username; + return this; + } + + public WifiNetworkSettingsSet setPassword(String password) { + this.password = password; + return this; + } + + public WifiNetworkSettingsSet setCACertificate(String caname, String certificate) { + this.caName = caname; + this.caCertStr = certificate; + return this; + } + + public WifiNetworkSettingsSet setUserSuffix(String suffix) { + this.usernameSuffix = suffix; + return this; + } + + public void setAuthData(String username, String password) { + this.username = username; + this.password = password; + } + + public void setAuthData(String password) { + this.password = password; + } + + public X509Certificate generateCertificate() throws CertificateException, IOException { + byte[] decoded = Base64.decode(caCertStr.replaceAll("-----BEGIN CERTIFICATE-----", "").replaceAll("-----END CERTIFICATE-----", ""), Base64.DEFAULT); + return (X509Certificate) CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(decoded)); + } + } + private View view; + private TabLayout tablayout; + private WifiNetworkSettingsSet[] wifiPresets; + private WifiManager wifiManager; + private ConnectivityManager connectivityManager; + private int selectedNetworkIndex = 0; + private boolean networkScanned = false; + private BroadcastReceiver wifiStateReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context arg0, Intent arg1) { + NetworkInfo networkInfo = (NetworkInfo) arg1.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); + if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { + updateWifiState(); + } + } + }; + private BroadcastReceiver wifiScanReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context arg0, Intent arg1) { + updateWifiScanState(); + } + }; + + private void loadDhbwWifiDefinitions() { + int numOfNetworks = 3; + int i = 0; + wifiPresets = new WifiNetworkSettingsSet[numOfNetworks]; + + wifiPresets[i++] = (new WifiNetworkSettingsSet("dhbw-secure", "dhbw-secure", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_WPA_ENTERPRISE)). + setWpaEnterprise( + new int[] {WifiConfiguration.KeyMgmt.WPA_EAP, WifiConfiguration.KeyMgmt.IEEE8021X}, + WifiEnterpriseConfig.Eap.PEAP, + WifiEnterpriseConfig.Phase2.MSCHAPV2, + null + ).setCACertificate("Deutsche Telekom Root CA 2", "-----BEGIN CERTIFICATE-----\n" + + "MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc\n" + + "MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj\n" + + "IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB\n" + + "IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE\n" + + "RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl\n" + + "U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290\n" + + "IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU\n" + + "ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC\n" + + "QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr\n" + + "rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S\n" + + "NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc\n" + + "QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH\n" + + "txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP\n" + + "BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC\n" + + "AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp\n" + + "tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa\n" + + "IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl\n" + + "6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+\n" + + "xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU\n" + + "Cm26OWMohpLzGITY+9HPBVZkVw==\n" + + "-----END CERTIFICATE-----"); + + wifiPresets[i++] = (new WifiNetworkSettingsSet("dhbw-wlan", "dhbw-wlan", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_NONE)); + + wifiPresets[i++] = (new WifiNetworkSettingsSet("eduroam", "eduroam", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_WPA_ENTERPRISE)). + setWpaEnterprise( + new int[] {WifiConfiguration.KeyMgmt.WPA_EAP, WifiConfiguration.KeyMgmt.IEEE8021X}, + WifiEnterpriseConfig.Eap.PEAP, + WifiEnterpriseConfig.Phase2.MSCHAPV2, + null + ).setCACertificate("Deutsche Telekom Root CA 2", "-----BEGIN CERTIFICATE-----\n" + + "MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc\n" + + "MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj\n" + + "IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB\n" + + "IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE\n" + + "RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl\n" + + "U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290\n" + + "IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU\n" + + "ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC\n" + + "QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr\n" + + "rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S\n" + + "NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc\n" + + "QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH\n" + + "txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP\n" + + "BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC\n" + + "AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp\n" + + "tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa\n" + + "IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl\n" + + "6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+\n" + + "xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU\n" + + "Cm26OWMohpLzGITY+9HPBVZkVw==\n" + + "-----END CERTIFICATE-----"). + setUserSuffix("@dhbw-loerrach.de"); + } + + + @TargetApi(18) + private void connectToWiFi(WifiNetworkSettingsSet settings) { + WifiConfiguration wifiConfig = new WifiConfiguration(); + wifiConfig.SSID = settings.ssid; + for(int i = 0; i < settings.authAlgorithms.length; i++) + wifiConfig.allowedKeyManagement.set(settings.authAlgorithms[i]); + + switch(settings.authType) { + case WIFI_AUTHTYPE_NONE: + break; + case WIFI_AUTHTYPE_WEP: + // not supported by our app + break; + case WIFI_AUTHTYPE_WPA: + + break; + case WIFI_AUTHTYPE_WPA_ENTERPRISE: + WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig(); + String username = settings.username; + if(settings.usernameSuffix != null) + username += settings.usernameSuffix; + enterpriseConfig.setIdentity(username); + enterpriseConfig.setPassword(settings.password); + enterpriseConfig.setEapMethod(settings.eapMethod); + enterpriseConfig.setPhase2Method(settings.phase2Method); + try { + enterpriseConfig.setCaCertificate(settings.generateCertificate()); + } catch (CertificateException e) { + } catch (IOException e) { + } + wifiConfig.enterpriseConfig = enterpriseConfig; + break; + } + int networkId = wifiManager.addNetwork(wifiConfig); + wifiManager.enableNetwork(networkId, true); + } + + + + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + loadDhbwWifiDefinitions(); + wifiManager = (WifiManager)AppContext.getMainActivity().getSystemService(AppContext.getMainActivity().WIFI_SERVICE); + connectivityManager = (ConnectivityManager) AppContext.getMainActivity().getSystemService(Activity.CONNECTIVITY_SERVICE); + } + + private void updateSelectedNetworkInformation() { + if(view == null) + return; + if(selectedNetworkIndex >= wifiPresets.length) + return; + + WifiNetworkSettingsSet settings = wifiPresets[selectedNetworkIndex]; + TextView ssidInfoView = (TextView) view.findViewById(R.id.ssidInfo); + TextView securityInfoView = (TextView) view.findViewById(R.id.securityInfo); + TextView eapInfoView = (TextView) view.findViewById(R.id.eapInfo); + TextView phase2InfoView = (TextView) view.findViewById(R.id.phase2Info); + TextView cacertInfoView = (TextView) view.findViewById(R.id.cacertInfo); + + TableRow eapInfoRow = (TableRow) view.findViewById(R.id.eapInfoRow); + TableRow phase2InfoRow = (TableRow) view.findViewById(R.id.phase2InfoRow); + TableRow cacertInfoRow = (TableRow) view.findViewById(R.id.cacertInfoRow); + TableRow pskInfoRow = (TableRow) view.findViewById(R.id.pskInfoRow); + + RelativeLayout insecureNetWarning = (RelativeLayout) view.findViewById(R.id.insecureNetWarning); + + + ssidInfoView.setText(settings.ssid); + + eapInfoRow.setVisibility(View.GONE); + phase2InfoRow.setVisibility(View.GONE); + cacertInfoRow.setVisibility(View.GONE); + pskInfoRow.setVisibility(View.GONE); + insecureNetWarning.setVisibility(View.GONE); + + switch(settings.authType) { + case WIFI_AUTHTYPE_NONE: + securityInfoView.setText(R.string.wifiopts_security_open); + + insecureNetWarning.setVisibility(View.VISIBLE); + break; + case WIFI_AUTHTYPE_WEP: + securityInfoView.setText(R.string.wifiopts_security_wep); + insecureNetWarning.setVisibility(View.VISIBLE); + // unsupported! + break; + case WIFI_AUTHTYPE_WPA: + securityInfoView.setText(R.string.wifiopts_security_wpa); + + pskInfoRow.setVisibility(View.VISIBLE); + break; + case WIFI_AUTHTYPE_WPA_ENTERPRISE: + securityInfoView.setText(R.string.wifiopts_security_wpa_enterprise); + + eapInfoRow.setVisibility(View.VISIBLE); + phase2InfoRow.setVisibility(View.VISIBLE); + cacertInfoRow.setVisibility(View.VISIBLE); + break; + } + + if(settings.authType == WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_WPA_ENTERPRISE) { + int eapStringId = 0; + switch(settings.eapMethod) { + case WifiEnterpriseConfig.Eap.PEAP: + eapStringId = R.string.wifiopts_eap_peap; + break; + case WifiEnterpriseConfig.Eap.TLS: + eapStringId = R.string.wifiopts_eap_tls; + break; + case WifiEnterpriseConfig.Eap.TTLS: + eapStringId = R.string.wifiopts_eap_ttls; + break; + case WifiEnterpriseConfig.Eap.PWD: + eapStringId = R.string.wifiopts_eap_pwd; + break; + } + if(eapStringId > 0) + eapInfoView.setText(eapStringId); + else + eapInfoView.setText(""); + + int phase2StringId = 0; + switch(settings.phase2Method) { + case WifiEnterpriseConfig.Phase2.MSCHAPV2: + phase2StringId = R.string.wifiopts_phase2_mschapv2; + break; + case WifiEnterpriseConfig.Phase2.GTC: + phase2StringId = R.string.wifiopts_phase2_gtc; + break; + } + if(phase2StringId > 0) + phase2InfoView.setText(phase2StringId); + else + phase2InfoView.setText(""); + + cacertInfoView.setText(settings.caName); + } else { + + } + updateWifiConnectButton(); + } + + private void updateWifiState() { + NetworkInfo myNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); + WifiInfo myWifiInfo = wifiManager.getConnectionInfo(); + + Resources resources = AppContext.getMainActivity().getResources(); + String status; + if(myNetworkInfo.isConnectedOrConnecting()) { + int statusId = (myNetworkInfo.isConnected() ? R.string.wifisettings_status_connected : R.string.wifisettings_status_connecting); + + String ssid = myWifiInfo.getSSID(); + + status = String.format(resources.getString(statusId), ssid); + } else { + status = resources.getString(R.string.wifisettings_status_disconnected); + } + + TextView statusTextView = (TextView)view.findViewById(R.id.wifiStatusText); + statusTextView.setText(status); + updateWifiConnectButton(); + } + + private void updateWifiScanState() { + networkScanned = true; + List scanResultList = wifiManager.getScanResults(); + for(int i = 0; i < wifiPresets.length; i++) { + boolean networkFound = false; + for(ScanResult result : scanResultList) { + if(result.SSID != null && result.SSID.equalsIgnoreCase(wifiPresets[i].ssid)) { + networkFound = true; + break; + } + } + wifiPresets[i].isInScanResult = networkFound; + } + updateWifiConnectButton(); + } + + private void updateWifiConnectButton() { + if(selectedNetworkIndex >= wifiPresets.length) + return; + WifiNetworkSettingsSet preset = wifiPresets[selectedNetworkIndex]; + + boolean buttonEnabled = false; + int buttonTextId = 0; + NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); + WifiInfo wifiInfo = wifiManager.getConnectionInfo(); + + if(!wifiManager.isWifiEnabled()) { + buttonTextId = R.string.wifisettings_connect_button_disabled; + } else if(networkInfo.isConnectedOrConnecting() && wifiInfo.getSSID() != null && wifiInfo.getSSID().equalsIgnoreCase(preset.ssid)) { + buttonTextId = R.string.wifisettings_connect_button_ready; + } else if(!networkScanned) { + buttonTextId = R.string.wifisettings_connect_button_scan; + } else if(!preset.isInScanResult) { + buttonTextId = R.string.wifisettings_connect_button_notfound; + buttonEnabled = true; + } else { + buttonEnabled = true; + buttonTextId = R.string.wifisettings_connect_button; + } + + Button connectBtn = (Button) view.findViewById(R.id.wifiConnectBtn); + connectBtn.setEnabled(buttonEnabled); + connectBtn.setText(buttonTextId); + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -45,12 +439,44 @@ public class WifiSettings extends CampusAppFragment { view = inflater.inflate(R.layout.fragment_wifi_settings, container, false); AppContext.setTitle("DHBW WLAN Settings"); + updateSelectedNetworkInformation(); + + tablayout = (TabLayout) view.findViewById(R.id.tabs); + tablayout.removeAllTabs(); + for(int i = 0; i < wifiPresets.length; i++) { + TabLayout.Tab tab = tablayout.newTab(); + tab.setText(wifiPresets[i].name); + tablayout.addTab(tab); + } + tablayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + selectedNetworkIndex = tab.getPosition(); + updateSelectedNetworkInformation(); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + } + }); + Button connectBtn = (Button) view.findViewById(R.id.wifiConnectBtn); connectBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Button connectBtn = (Button)v; + Button connectBtn = (Button) v; connectBtn.setEnabled(false); + WifiNetworkSettingsSet settings = wifiPresets[selectedNetworkIndex]; + if(!settings.isInScanResult) { + networkScanned = false; + wifiManager.startScan(); + updateWifiConnectButton(); + return; + } EditText usernameEdt = (EditText) view.findViewById(R.id.wifiUsername); EditText passwordEdt = (EditText) view.findViewById(R.id.wifiPassword); @@ -58,40 +484,52 @@ public class WifiSettings extends CampusAppFragment { String username = usernameEdt.getText().toString(); String password = passwordEdt.getText().toString(); - if(Build.VERSION.SDK_INT < 18) { + if (Build.VERSION.SDK_INT < 18) { // connectToDHWiFi not supported! // do something else? + } else if (username.length() > 0 && password.length() > 0) { + + if(settings != null) { + settings.setAuthData(username, password); + connectToWiFi(settings); + } } - else if(username.length() > 0 && password.length() > 0) - connectToDHWiFi(username, password); connectBtn.setEnabled(true); } }); + updateWifiState(); + updateWifiScanState(); + return view; } - @TargetApi(18) - private void connectToDHWiFi(String username, String password) { - WifiConfiguration wifiConfig = new WifiConfiguration(); - wifiConfig.SSID = "dhbw-secure"; - wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); - wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); + @Override + public void onResume() { + super.onResume(); + + if(AppContext == null) + AppContext = CampusAppContext.getInstance(); - WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig(); - enterpriseConfig.setIdentity(username); - enterpriseConfig.setPassword(password); - enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.PEAP); - enterpriseConfig.setPhase2Method(WifiEnterpriseConfig.Phase2.MSCHAPV2); - wifiConfig.enterpriseConfig = enterpriseConfig; + AppContext.getMainActivity().registerReceiver(this.wifiStateReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); + AppContext.getMainActivity().registerReceiver(this.wifiScanReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); - WifiManager wfm = (WifiManager)AppContext.getMainActivity().getSystemService(AppContext.getMainActivity().WIFI_SERVICE); + networkScanned = false; + wifiManager.startScan(); + updateWifiConnectButton(); - int networkId = wfm.addNetwork(wifiConfig); - wfm.enableNetwork(networkId, true); + Log.i("WifiSettings", "registered wifi state receiver"); } + @Override + public void onPause() { + super.onPause(); + AppContext.getMainActivity().unregisterReceiver(this.wifiStateReceiver); + AppContext.getMainActivity().unregisterReceiver(this.wifiScanReceiver); + + Log.i("WifiSettings", "unregistered wifi state receiver"); + } }