1 package de.dhbwloe.campusapp.wifi;
3 import android.annotation.TargetApi;
4 import android.net.NetworkInfo;
5 import android.net.wifi.WifiConfiguration;
6 import android.net.wifi.WifiEnterpriseConfig;
7 import android.net.wifi.WifiInfo;
8 import android.net.wifi.WifiManager;
9 import android.os.Build;
11 import java.io.IOException;
12 import java.security.cert.CertificateException;
15 * Created by pk910 on 08.02.2016.
17 public class WifiConfigurationManager {
18 public interface WifiConfigurationComplete {
19 public void onWifiConfigurationComplete(WifiNetworkSettings settings, String response);
22 private WifiManager wifiManager;
24 public WifiConfigurationManager(WifiManager wifiManager) {
25 this.wifiManager = wifiManager;
28 public void connect(WifiNetworkSettings settings) {
29 if (Build.VERSION.SDK_INT >= 18) {
30 connectToWiFi(settings);
36 private void connectToWiFi(WifiNetworkSettings settings) {
37 WifiConfiguration wifiConfig = new WifiConfiguration();
38 wifiConfig.SSID = settings.ssid;
39 for(int i = 0; i < settings.authAlgorithms.length; i++)
40 wifiConfig.allowedKeyManagement.set(settings.authAlgorithms[i]);
42 switch(settings.authType) {
43 case WIFI_AUTHTYPE_NONE:
45 case WIFI_AUTHTYPE_WEP:
46 // not supported by our app
48 case WIFI_AUTHTYPE_WPA:
51 case WIFI_AUTHTYPE_WPA_ENTERPRISE:
52 WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig();
53 String username = settings.username;
54 if(settings.usernameSuffix != null)
55 username += settings.usernameSuffix;
56 enterpriseConfig.setIdentity(username);
57 enterpriseConfig.setPassword(settings.password);
58 enterpriseConfig.setEapMethod(settings.eapMethod);
59 enterpriseConfig.setPhase2Method(settings.phase2Method);
61 enterpriseConfig.setCaCertificate(settings.generateCertificate());
62 } catch (CertificateException e) {
63 } catch (IOException e) {
65 wifiConfig.enterpriseConfig = enterpriseConfig;
68 int networkId = wifiManager.addNetwork(wifiConfig);
69 wifiManager.enableNetwork(networkId, true);