diff options
| author | 2019-08-14 04:54:59 -0700 | |
|---|---|---|
| committer | 2019-08-14 12:15:56 +0000 | |
| commit | 91decc85fc284ac6f998126fd16e557d1cce4db5 (patch) | |
| tree | ed51848ba4444bee03b3a3510aa8091738660db6 | |
| parent | 5cd874d7922e0a793bb4d1305ef7b21edee13a7b (diff) | |
Get resource based on subId for multi-SIM
The resource loading is done based on the last SIM to come up
which is not a deterministic design. Thus, update the way to get
the resource based on the subId.
Test: atest FrameworksNetTests
Test: manually test with avoid bad wifi feature supported sim
Bug: 138956509
Change-Id: Ib5b085d97103889600773d269e03b939c29ca47d
Merged-In: Ib5b085d97103889600773d269e03b939c29ca47d
(cherry picked from commit 5e994ea02c7a820543f3726186240548676f4b4e)
| -rw-r--r-- | core/java/android/net/util/MultinetworkPolicyTracker.java | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/core/java/android/net/util/MultinetworkPolicyTracker.java b/core/java/android/net/util/MultinetworkPolicyTracker.java index 30c5cd98b719..f7e494d830ac 100644 --- a/core/java/android/net/util/MultinetworkPolicyTracker.java +++ b/core/java/android/net/util/MultinetworkPolicyTracker.java @@ -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 @@ -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); @@ -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(); } @@ -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); } /** |