Loading core/java/android/net/util/MultinetworkPolicyTracker.java +26 −9 Original line number Diff line number Diff line Loading @@ -16,28 +16,31 @@ package android.net.util; import static android.provider.Settings.Global.NETWORK_AVOID_BAD_WIFI; import static android.provider.Settings.Global.NETWORK_METERED_MULTIPATH_PREFERENCE; import android.annotation.NonNull; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Resources; import android.database.ContentObserver; import android.net.ConnectivityManager; import android.net.Uri; import android.os.Handler; import android.os.Message; import android.os.UserHandle; import android.provider.Settings; import android.telephony.PhoneStateListener; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Slog; import java.util.Arrays; import java.util.List; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import static android.provider.Settings.Global.NETWORK_AVOID_BAD_WIFI; import static android.provider.Settings.Global.NETWORK_METERED_MULTIPATH_PREFERENCE; import java.util.Arrays; import java.util.List; /** * A class to encapsulate management of the "Smart Networking" capability of Loading Loading @@ -69,6 +72,7 @@ public class MultinetworkPolicyTracker { private volatile boolean mAvoidBadWifi = true; private volatile int mMeteredMultipathPreference; private int mActiveSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; public MultinetworkPolicyTracker(Context ctx, Handler handler) { this(ctx, handler, null); Loading @@ -95,6 +99,14 @@ public class MultinetworkPolicyTracker { } }; TelephonyManager.from(ctx).listen(new PhoneStateListener() { @Override public void onActiveDataSubscriptionIdChanged(int subId) { mActiveSubId = subId; reevaluate(); } }, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE); updateAvoidBadWifi(); updateMeteredMultipathPreference(); } Loading Loading @@ -131,7 +143,12 @@ public class MultinetworkPolicyTracker { * Whether the device or carrier configuration disables avoiding bad wifi by default. */ public boolean configRestrictsAvoidBadWifi() { return (mContext.getResources().getInteger(R.integer.config_networkAvoidBadWifi) == 0); return (getResourcesForActiveSubId().getInteger(R.integer.config_networkAvoidBadWifi) == 0); } @NonNull private Resources getResourcesForActiveSubId() { return SubscriptionManager.getResourcesForSubId(mContext, mActiveSubId); } /** Loading Loading
core/java/android/net/util/MultinetworkPolicyTracker.java +26 −9 Original line number Diff line number Diff line Loading @@ -16,28 +16,31 @@ package android.net.util; import static android.provider.Settings.Global.NETWORK_AVOID_BAD_WIFI; import static android.provider.Settings.Global.NETWORK_METERED_MULTIPATH_PREFERENCE; import android.annotation.NonNull; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Resources; import android.database.ContentObserver; import android.net.ConnectivityManager; import android.net.Uri; import android.os.Handler; import android.os.Message; import android.os.UserHandle; import android.provider.Settings; import android.telephony.PhoneStateListener; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Slog; import java.util.Arrays; import java.util.List; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import static android.provider.Settings.Global.NETWORK_AVOID_BAD_WIFI; import static android.provider.Settings.Global.NETWORK_METERED_MULTIPATH_PREFERENCE; import java.util.Arrays; import java.util.List; /** * A class to encapsulate management of the "Smart Networking" capability of Loading Loading @@ -69,6 +72,7 @@ public class MultinetworkPolicyTracker { private volatile boolean mAvoidBadWifi = true; private volatile int mMeteredMultipathPreference; private int mActiveSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; public MultinetworkPolicyTracker(Context ctx, Handler handler) { this(ctx, handler, null); Loading @@ -95,6 +99,14 @@ public class MultinetworkPolicyTracker { } }; TelephonyManager.from(ctx).listen(new PhoneStateListener() { @Override public void onActiveDataSubscriptionIdChanged(int subId) { mActiveSubId = subId; reevaluate(); } }, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE); updateAvoidBadWifi(); updateMeteredMultipathPreference(); } Loading Loading @@ -131,7 +143,12 @@ public class MultinetworkPolicyTracker { * Whether the device or carrier configuration disables avoiding bad wifi by default. */ public boolean configRestrictsAvoidBadWifi() { return (mContext.getResources().getInteger(R.integer.config_networkAvoidBadWifi) == 0); return (getResourcesForActiveSubId().getInteger(R.integer.config_networkAvoidBadWifi) == 0); } @NonNull private Resources getResourcesForActiveSubId() { return SubscriptionManager.getResourcesForSubId(mContext, mActiveSubId); } /** Loading