Merge "Tweak Privacy settings to match latest mocks"
diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java
index ef9f346..7f1221e 100644
--- a/src/com/android/settings/wifi/WifiEnabler.java
+++ b/src/com/android/settings/wifi/WifiEnabler.java
@@ -33,11 +33,15 @@
import android.text.TextUtils;
import android.widget.Toast;
+import java.util.concurrent.atomic.AtomicBoolean;
+
public class WifiEnabler implements Preference.OnPreferenceChangeListener {
- private final Context mContext;
+ private final Context mContext;
private final CheckBoxPreference mCheckBox;
private final CharSequence mOriginalSummary;
+ private AtomicBoolean mConnected = new AtomicBoolean(false);
+
private final WifiManager mWifiManager;
private final IntentFilter mIntentFilter;
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@@ -48,11 +52,15 @@
handleWifiStateChanged(intent.getIntExtra(
WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN));
} else if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION.equals(action)) {
- handleStateChanged(WifiInfo.getDetailedStateOf((SupplicantState)
- intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)));
+ if (!mConnected.get()) {
+ handleStateChanged(WifiInfo.getDetailedStateOf((SupplicantState)
+ intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)));
+ }
} else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
- handleStateChanged(((NetworkInfo) intent.getParcelableExtra(
- WifiManager.EXTRA_NETWORK_INFO)).getDetailedState());
+ NetworkInfo info = (NetworkInfo) intent.getParcelableExtra(
+ WifiManager.EXTRA_NETWORK_INFO);
+ mConnected.set(info.isConnected());
+ handleStateChanged(info.getDetailedState());
}
}
};
@@ -75,15 +83,15 @@
mContext.registerReceiver(mReceiver, mIntentFilter);
mCheckBox.setOnPreferenceChangeListener(this);
}
-
+
public void pause() {
mContext.unregisterReceiver(mReceiver);
mCheckBox.setOnPreferenceChangeListener(null);
}
-
+
public boolean onPreferenceChange(Preference preference, Object value) {
boolean enable = (Boolean) value;
-
+
// Show toast message if Wi-Fi is not allowed in airplane mode
if (enable && !WirelessSettings
.isRadioAllowed(mContext, Settings.System.RADIO_WIFI)) {
@@ -109,7 +117,7 @@
// Don't update UI to opposite state until we're sure
return false;
}
-
+
private void handleWifiStateChanged(int state) {
switch (state) {
case WifiManager.WIFI_STATE_ENABLING: