Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 02f0a4af authored by Jason Monk's avatar Jason Monk
Browse files

Fix connecting to secure wifi from QS

Sometimes the preference isn't created yet, so we need to hold on
to the ssid until the preference for that access point gets created.

Bug: 20975085
Change-Id: Ib5804611793550106f6059b1afe016de4e89bc64
parent f82cd8f4
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -147,6 +147,7 @@ public class WifiSettings extends RestrictedSettingsFragment
    private Bundle mWifiNfcDialogSavedState;

    private WifiTracker mWifiTracker;
    private String mOpenSsid;

    /* End of "used in Wifi Setup context" */

@@ -252,20 +253,8 @@ public class WifiSettings extends RestrictedSettingsFragment
        setHasOptionsMenu(true);

        if (intent.hasExtra(EXTRA_START_CONNECT_SSID)) {
            String ssid = intent.getStringExtra(EXTRA_START_CONNECT_SSID);
            mOpenSsid = intent.getStringExtra(EXTRA_START_CONNECT_SSID);
            onAccessPointsChanged();
            PreferenceScreen preferenceScreen = getPreferenceScreen();
            for (int i = 0; i < preferenceScreen.getPreferenceCount(); i++) {
                Preference preference = preferenceScreen.getPreference(i);
                if (preference instanceof AccessPointPreference) {
                    AccessPoint accessPoint = ((AccessPointPreference) preference).getAccessPoint();
                    if (ssid.equals(accessPoint.getSsid()) && !accessPoint.isSaved()
                            && accessPoint.getSecurity() != AccessPoint.SECURITY_NONE) {
                        onPreferenceTreeClick(preferenceScreen, preference);
                        break;
                    }
                }
            }
        }
    }

@@ -642,6 +631,12 @@ public class WifiSettings extends RestrictedSettingsFragment
                        AccessPointPreference preference = new AccessPointPreference(accessPoint,
                                getActivity(), false);

                        if (mOpenSsid != null && mOpenSsid.equals(accessPoint.getSsid())
                                && !accessPoint.isSaved()
                                && accessPoint.getSecurity() != AccessPoint.SECURITY_NONE) {
                            onPreferenceTreeClick(getPreferenceScreen(), preference);
                            mOpenSsid = null;
                        }
                        getPreferenceScreen().addPreference(preference);
                        accessPoint.setListener(this);
                    }