Use networkType to display wifi and mobile notification separately.
There are two bugs one is I was clearing the notification in CaptivePortalTracker when entering the ActivateState. (double check according to bug 5021626 we should be calling enter) Second is we could have the need to display both icons but can't because we only allow one. The solution I'm proposing here is to allow two notifications and have then controlled separately. Bug: 10886908 Change-Id: I30e7130bc542535492d175640a4990c592f32806
This commit is contained in:
@@ -3987,8 +3987,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
return timeOutMs;
|
return timeOutMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start off with notification off
|
// Start off with mobile notification off
|
||||||
setProvNotificationVisible(false, ConnectivityManager.TYPE_NONE, null, null);
|
setProvNotificationVisible(false, ConnectivityManager.TYPE_MOBILE_HIPRI, null, null);
|
||||||
|
|
||||||
CheckMp checkMp = new CheckMp(mContext, this);
|
CheckMp checkMp = new CheckMp(mContext, this);
|
||||||
CheckMp.CallBack cb = new CheckMp.CallBack() {
|
CheckMp.CallBack cb = new CheckMp.CallBack() {
|
||||||
@@ -4013,7 +4013,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
}
|
}
|
||||||
if (TextUtils.isEmpty(url) == false) {
|
if (TextUtils.isEmpty(url) == false) {
|
||||||
if (DBG) log("CheckMp.onComplete: warm (redirected), url=" + url);
|
if (DBG) log("CheckMp.onComplete: warm (redirected), url=" + url);
|
||||||
setProvNotificationVisible(true, ni.getType(), ni.getExtraInfo(),
|
setProvNotificationVisible(true,
|
||||||
|
ConnectivityManager.TYPE_MOBILE_HIPRI, ni.getExtraInfo(),
|
||||||
url);
|
url);
|
||||||
} else {
|
} else {
|
||||||
if (DBG) log("CheckMp.onComplete: warm (redirected), no url");
|
if (DBG) log("CheckMp.onComplete: warm (redirected), no url");
|
||||||
@@ -4024,7 +4025,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
String url = getMobileProvisioningUrl();
|
String url = getMobileProvisioningUrl();
|
||||||
if (TextUtils.isEmpty(url) == false) {
|
if (TextUtils.isEmpty(url) == false) {
|
||||||
if (DBG) log("CheckMp.onComplete: warm (no dns/tcp), url=" + url);
|
if (DBG) log("CheckMp.onComplete: warm (no dns/tcp), url=" + url);
|
||||||
setProvNotificationVisible(true, ni.getType(), ni.getExtraInfo(),
|
setProvNotificationVisible(true,
|
||||||
|
ConnectivityManager.TYPE_MOBILE_HIPRI, ni.getExtraInfo(),
|
||||||
url);
|
url);
|
||||||
} else {
|
} else {
|
||||||
if (DBG) log("CheckMp.onComplete: warm (no dns/tcp), no url");
|
if (DBG) log("CheckMp.onComplete: warm (no dns/tcp), no url");
|
||||||
@@ -4426,7 +4428,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
|
|
||||||
private void handleMobileProvisioningAction(String url) {
|
private void handleMobileProvisioningAction(String url) {
|
||||||
// Notication mark notification as not visible
|
// Notication mark notification as not visible
|
||||||
setProvNotificationVisible(false, ConnectivityManager.TYPE_NONE, null, null);
|
setProvNotificationVisible(false, ConnectivityManager.TYPE_MOBILE_HIPRI, null, null);
|
||||||
|
|
||||||
// If provisioning network handle as a special case,
|
// If provisioning network handle as a special case,
|
||||||
// otherwise launch browser with the intent directly.
|
// otherwise launch browser with the intent directly.
|
||||||
@@ -4512,14 +4514,14 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
notification.setLatestEventInfo(mContext, title, details, notification.contentIntent);
|
notification.setLatestEventInfo(mContext, title, details, notification.contentIntent);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
notificationManager.notify(NOTIFICATION_ID, 1, notification);
|
notificationManager.notify(NOTIFICATION_ID, networkType, notification);
|
||||||
} catch (NullPointerException npe) {
|
} catch (NullPointerException npe) {
|
||||||
loge("setNotificaitionVisible: visible notificationManager npe=" + npe);
|
loge("setNotificaitionVisible: visible notificationManager npe=" + npe);
|
||||||
npe.printStackTrace();
|
npe.printStackTrace();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
notificationManager.cancel(NOTIFICATION_ID, 1);
|
notificationManager.cancel(NOTIFICATION_ID, networkType);
|
||||||
} catch (NullPointerException npe) {
|
} catch (NullPointerException npe) {
|
||||||
loge("setNotificaitionVisible: cancel notificationManager npe=" + npe);
|
loge("setNotificaitionVisible: cancel notificationManager npe=" + npe);
|
||||||
npe.printStackTrace();
|
npe.printStackTrace();
|
||||||
|
|||||||
Reference in New Issue
Block a user