diff --git a/cm/lib/main/java/org/cyanogenmod/platform/internal/ProfileTriggerHelper.java b/cm/lib/main/java/org/cyanogenmod/platform/internal/ProfileTriggerHelper.java index a421749e..82e66876 100644 --- a/cm/lib/main/java/org/cyanogenmod/platform/internal/ProfileTriggerHelper.java +++ b/cm/lib/main/java/org/cyanogenmod/platform/internal/ProfileTriggerHelper.java @@ -23,6 +23,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; +import android.net.NetworkInfo; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.net.wifi.WifiSsid; @@ -107,15 +108,20 @@ public class ProfileTriggerHelper extends BroadcastReceiver { String action = intent.getAction(); if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { - String ssid = getActiveSSID(); - if (ssid == null || TextUtils.equals(ssid, WifiSsid.NONE)) { + NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); + NetworkInfo.DetailedState state = networkInfo.getDetailedState(); + if (NetworkInfo.DetailedState.DISCONNECTED.equals(state)) { checkTriggers(Profile.TriggerType.WIFI, mLastConnectedSSID, Profile.TriggerState.ON_DISCONNECT); mLastConnectedSSID = WifiSsid.NONE; - } else if (!TextUtils.equals(mLastConnectedSSID, ssid)) { - mLastConnectedSSID = ssid; - checkTriggers(Profile.TriggerType.WIFI, mLastConnectedSSID, - Profile.TriggerState.ON_CONNECT); + } else if (NetworkInfo.DetailedState.CONNECTED.equals(state)) { + WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO); + WifiSsid ssid = wifiInfo.getWifiSsid(); + if (ssid != null) { + mLastConnectedSSID = ssid.toString(); + checkTriggers(Profile.TriggerType.WIFI, mLastConnectedSSID, + Profile.TriggerState.ON_CONNECT); + } } } else if (action.equals(BluetoothDevice.ACTION_ACL_CONNECTED) || action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) {