summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorDavid van Tonder <david.vantonder@gmail.com>2013-07-04 17:08:24 -0700
committerGerrit Code Review <gerrit@cyanogenmod.org>2013-07-04 17:08:24 -0700
commita48d4ed29fa904f065786f9b773b605ad9638e6f (patch)
treec73003e5943f4ac41f8f859881f1130f6967ec9b /services
parent12a6a98f4c5a96081afc4b9e171fa8817982640d (diff)
parentc254a293ff0de412df6dbee979e1c2c6d4c14219 (diff)
downloadframeworks_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.java39
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