@@ -391,6 +391,10 @@ private ConnectivityService(Context context) {
391391 nst .startMonitoring ();
392392 }
393393 mNetTrackers [netType ] = nst ;
394+ if (noMobileData ) {
395+ if (DBG ) Slog .d (TAG , "tearing down WiMAX networks due to setting" );
396+ mNetTrackers [netType ].teardown ();
397+ }
394398 break ;
395399 default :
396400 Slog .e (TAG , "Trying to create a DataStateTracker for an unknown radio type " +
@@ -987,6 +991,12 @@ private void handleSetMobileData(boolean enabled) {
987991 }
988992 mNetTrackers [ConnectivityManager .TYPE_MOBILE ].reconnect ();
989993 }
994+ if (mNetTrackers [ConnectivityManager .TYPE_WIMAX ] != null ) {
995+ if (DBG ) {
996+ Slog .d (TAG , "starting up " + mNetTrackers [ConnectivityManager .TYPE_WIMAX ]);
997+ }
998+ mNetTrackers [ConnectivityManager .TYPE_WIMAX ].reconnect ();
999+ }
9901000 } else {
9911001 for (NetworkStateTracker nt : mNetTrackers ) {
9921002 if (nt == null ) continue ;
@@ -996,6 +1006,9 @@ private void handleSetMobileData(boolean enabled) {
9961006 nt .teardown ();
9971007 }
9981008 }
1009+ if (mNetTrackers [ConnectivityManager .TYPE_WIMAX ] != null ) {
1010+ mNetTrackers [ConnectivityManager .TYPE_WIMAX ].teardown ();
1011+ }
9991012 }
10001013 }
10011014
@@ -1124,6 +1137,12 @@ private void tryFailover(int prevNetType) {
11241137 " because Mobile Data Disabled" );
11251138 continue ;
11261139 }
1140+ if (mNetAttributes [checkType ].mRadio == ConnectivityManager .TYPE_WIMAX &&
1141+ noMobileData ) {
1142+ Slog .e (TAG , "not failing over to mobile type " + checkType +
1143+ " because Mobile Data Disabled" );
1144+ continue ;
1145+ }
11271146 NetworkStateTracker checkTracker = mNetTrackers [checkType ];
11281147 NetworkInfo checkInfo = checkTracker .getNetworkInfo ();
11291148 if (!checkInfo .isConnectedOrConnecting () || checkTracker .isTeardownRequested ()) {
0 commit comments