diff options
author | David van Tonder <david.vantonder@gmail.com> | 2013-07-04 17:08:24 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2013-07-04 17:08:24 -0700 |
commit | a48d4ed29fa904f065786f9b773b605ad9638e6f (patch) | |
tree | c73003e5943f4ac41f8f859881f1130f6967ec9b /services | |
parent | 12a6a98f4c5a96081afc4b9e171fa8817982640d (diff) | |
parent | c254a293ff0de412df6dbee979e1c2c6d4c14219 (diff) | |
download | frameworks_base-a48d4ed29fa904f065786f9b773b605ad9638e6f.zip frameworks_base-a48d4ed29fa904f065786f9b773b605ad9638e6f.tar.gz frameworks_base-a48d4ed29fa904f065786f9b773b605ad9638e6f.tar.bz2 |
Merge "Profile: Filter on NETWORK_STATE_CHANGED instead of SUPPLICANT_STATE_CHANGED" into cm-10.1
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/ProfileManagerService.java | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/services/java/com/android/server/ProfileManagerService.java b/services/java/com/android/server/ProfileManagerService.java index a1533c0..3c3bfb3 100644 --- a/services/java/com/android/server/ProfileManagerService.java +++ b/services/java/com/android/server/ProfileManagerService.java @@ -25,15 +25,15 @@ import android.app.IProfileManager; import android.app.NotificationGroup; import android.app.Profile; import android.app.ProfileGroup; -import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.XmlResourceParser; -import android.net.wifi.SupplicantState; import android.net.wifi.WifiManager; +import android.net.wifi.WifiSsid; +import android.net.wifi.WifiInfo; import android.os.RemoteException; import android.os.UserHandle; import android.text.TextUtils; @@ -103,19 +103,14 @@ public class ProfileManagerService extends IProfileManager.Stub { } else if (action.equals(Intent.ACTION_SHUTDOWN)) { persistIfDirty(); - } else if (action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) { - SupplicantState state = intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE); + } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { + String activeSSID = getActiveSSID(); int triggerState; - switch (state) { - case COMPLETED: - triggerState = Profile.TriggerState.ON_CONNECT; - mLastConnectedSSID = getActiveSSID(); - break; - case DISCONNECTED: - triggerState = Profile.TriggerState.ON_DISCONNECT; - break; - default: - return; + if (activeSSID != null) { + triggerState = Profile.TriggerState.ON_CONNECT; + mLastConnectedSSID = activeSSID; + } else { + triggerState = Profile.TriggerState.ON_DISCONNECT; } checkTriggers(Profile.TriggerType.WIFI, mLastConnectedSSID, triggerState); } else if (action.equals(BluetoothDevice.ACTION_ACL_CONNECTED) @@ -135,7 +130,9 @@ public class ProfileManagerService extends IProfileManager.Stub { } try { - setActiveProfile(p, true); + if (!mActiveProfile.getUuid().equals(p.getUuid())) { + setActiveProfile(p, true); + } } catch (RemoteException e) { Log.e(TAG, "Could not update profile on trigger", e); } @@ -158,7 +155,7 @@ public class ProfileManagerService extends IProfileManager.Stub { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_LOCALE_CHANGED); filter.addAction(Intent.ACTION_SHUTDOWN); - filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); + filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); mContext.registerReceiver(mIntentReceiver, filter); @@ -198,7 +195,15 @@ public class ProfileManagerService extends IProfileManager.Stub { } private String getActiveSSID() { - return mWifiManager.getConnectionInfo().getSSID().replace("\"", ""); + WifiInfo wifiinfo = mWifiManager.getConnectionInfo(); + if (wifiinfo == null) { + return null; + } + WifiSsid ssid = wifiinfo.getWifiSsid(); + if (ssid == null) { + return null; + } + return ssid.toString(); } @Override |