Merge "DO NOT MERGE Do not kill sockets going default->hipri" into gingerbread
This commit is contained in:
committed by
Android (Google) Code Review
commit
6b2c56a299
@@ -53,6 +53,10 @@ public class MobileDataStateTracker extends NetworkStateTracker {
|
||||
private boolean mEnabled;
|
||||
private BroadcastReceiver mStateReceiver;
|
||||
|
||||
// DEFAULT and HIPRI are the same connection. If we're one of these we need to check if
|
||||
// the other is also disconnected before we reset sockets
|
||||
private boolean mIsDefaultOrHipri = false;
|
||||
|
||||
/**
|
||||
* Create a new MobileDataStateTracker
|
||||
* @param context the application context of the caller
|
||||
@@ -71,6 +75,10 @@ public class MobileDataStateTracker extends NetworkStateTracker {
|
||||
} else {
|
||||
mApnTypeToWatchFor = mApnType;
|
||||
}
|
||||
if (netType == ConnectivityManager.TYPE_MOBILE ||
|
||||
netType == ConnectivityManager.TYPE_MOBILE_HIPRI) {
|
||||
mIsDefaultOrHipri = true;
|
||||
}
|
||||
|
||||
mPhoneService = null;
|
||||
if(netType == ConnectivityManager.TYPE_MOBILE) {
|
||||
@@ -138,6 +146,7 @@ public class MobileDataStateTracker extends NetworkStateTracker {
|
||||
}
|
||||
|
||||
private class MobileDataStateReceiver extends BroadcastReceiver {
|
||||
ConnectivityManager mConnectivityManager;
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
synchronized(this) {
|
||||
if (intent.getAction().equals(TelephonyIntents.
|
||||
@@ -190,7 +199,26 @@ public class MobileDataStateTracker extends NetworkStateTracker {
|
||||
}
|
||||
|
||||
setDetailedState(DetailedState.DISCONNECTED, reason, apnName);
|
||||
if (mInterfaceName != null) {
|
||||
boolean doReset = true;
|
||||
if (mIsDefaultOrHipri == true) {
|
||||
// both default and hipri must go down before we reset
|
||||
int typeToCheck = (Phone.APN_TYPE_DEFAULT.equals(mApnType) ?
|
||||
ConnectivityManager.TYPE_MOBILE_HIPRI :
|
||||
ConnectivityManager.TYPE_MOBILE);
|
||||
if (mConnectivityManager == null) {
|
||||
mConnectivityManager =
|
||||
(ConnectivityManager)context.getSystemService(
|
||||
Context.CONNECTIVITY_SERVICE);
|
||||
}
|
||||
if (mConnectivityManager != null) {
|
||||
NetworkInfo info = mConnectivityManager.getNetworkInfo(
|
||||
typeToCheck);
|
||||
if (info != null && info.isConnected() == true) {
|
||||
doReset = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (doReset && mInterfaceName != null) {
|
||||
NetworkUtils.resetConnections(mInterfaceName);
|
||||
}
|
||||
// can't do this here - ConnectivityService needs it to clear stuff
|
||||
|
||||
Reference in New Issue
Block a user