Fix internet panel doesn't show data rat after dds changed

The internet panel does not listen dds changed.

Bug: 193029917
Test: atest NetworkProviderWorkerTest
Change-Id: I58544ec2fd3f2bba5c6590ce54bcf68d0c83b06b
This commit is contained in:
SongFerngWang
2021-07-08 03:43:23 +08:00
parent 29da5abcb1
commit f7073adf80

View File

@@ -20,7 +20,10 @@ import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET;
import static com.android.settingslib.mobile.MobileMappings.getIconKey; import static com.android.settingslib.mobile.MobileMappings.getIconKey;
import static com.android.settingslib.mobile.MobileMappings.mapIconSets; import static com.android.settingslib.mobile.MobileMappings.mapIconSets;
import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.net.Uri; import android.net.Uri;
import android.os.Handler; import android.os.Handler;
@@ -60,11 +63,22 @@ public class NetworkProviderWorker extends WifiScanWorker implements
private SubscriptionsChangeListener mSubscriptionsListener; private SubscriptionsChangeListener mSubscriptionsListener;
private MobileDataEnabledListener mDataEnabledListener; private MobileDataEnabledListener mDataEnabledListener;
private DataConnectivityListener mConnectivityListener; private DataConnectivityListener mConnectivityListener;
private int mDefaultDataSubid = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private final Context mContext; private final Context mContext;
final Handler mHandler; final Handler mHandler;
@VisibleForTesting @VisibleForTesting
final NetworkProviderTelephonyCallback mTelephonyCallback; final NetworkProviderTelephonyCallback mTelephonyCallback;
private final BroadcastReceiver mConnectionChangeReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
Log.d(TAG, "ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED");
updateListener();
}
}
};
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
private Config mConfig = null; private Config mConfig = null;
private TelephonyDisplayInfo mTelephonyDisplayInfo = private TelephonyDisplayInfo mTelephonyDisplayInfo =
@@ -80,10 +94,10 @@ public class NetworkProviderWorker extends WifiScanWorker implements
mMobileDataObserver = new DataContentObserver(mHandler, this); mMobileDataObserver = new DataContentObserver(mHandler, this);
mContext = context; mContext = context;
mDefaultDataSubid = getDefaultDataSubscriptionId(); mDefaultDataSubId = getDefaultDataSubscriptionId();
Log.d(TAG, "Init, SubId: " + mDefaultDataSubId);
mTelephonyManager = mContext.getSystemService( mTelephonyManager = mContext.getSystemService(
TelephonyManager.class).createForSubscriptionId(mDefaultDataSubid); TelephonyManager.class).createForSubscriptionId(mDefaultDataSubId);
mTelephonyCallback = new NetworkProviderTelephonyCallback(); mTelephonyCallback = new NetworkProviderTelephonyCallback();
mSubscriptionsListener = new SubscriptionsChangeListener(context, this); mSubscriptionsListener = new SubscriptionsChangeListener(context, this);
mDataEnabledListener = new MobileDataEnabledListener(context, this); mDataEnabledListener = new MobileDataEnabledListener(context, this);
@@ -98,12 +112,15 @@ public class NetworkProviderWorker extends WifiScanWorker implements
@Override @Override
protected void onSlicePinned() { protected void onSlicePinned() {
Log.d(TAG, "onSlicePinned"); Log.d(TAG, "onSlicePinned");
mMobileDataObserver.register(mContext, mDefaultDataSubid); mMobileDataObserver.register(mContext, mDefaultDataSubId);
mSubscriptionsListener.start(); mSubscriptionsListener.start();
mDataEnabledListener.start(mDefaultDataSubid); mDataEnabledListener.start(mDefaultDataSubId);
mConnectivityListener.start(); mConnectivityListener.start();
mSignalStrengthListener.resume(); mSignalStrengthListener.resume();
mTelephonyManager.registerTelephonyCallback(mHandler::post, mTelephonyCallback); mTelephonyManager.registerTelephonyCallback(mHandler::post, mTelephonyCallback);
IntentFilter filter = new IntentFilter();
filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
mContext.registerReceiver(mConnectionChangeReceiver, filter);
super.onSlicePinned(); super.onSlicePinned();
} }
@@ -116,6 +133,9 @@ public class NetworkProviderWorker extends WifiScanWorker implements
mConnectivityListener.stop(); mConnectivityListener.stop();
mSignalStrengthListener.pause(); mSignalStrengthListener.pause();
mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback); mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
if (mConnectionChangeReceiver != null) {
mContext.unregisterReceiver(mConnectionChangeReceiver);
}
super.onSliceUnpinned(); super.onSliceUnpinned();
} }
@@ -137,14 +157,14 @@ public class NetworkProviderWorker extends WifiScanWorker implements
notifySliceChange(); notifySliceChange();
} }
@Override private void updateListener() {
public void onSubscriptionsChanged() {
int defaultDataSubId = getDefaultDataSubscriptionId(); int defaultDataSubId = getDefaultDataSubscriptionId();
if (mDefaultDataSubid == defaultDataSubId) { if (mDefaultDataSubId == defaultDataSubId) {
Log.d(TAG, "onSubscriptionsChanged: no change"); Log.d(TAG, "DDS: no change");
return; return;
} }
Log.d(TAG, "onSubscriptionsChanged: defaultDataSubId:" + defaultDataSubId); mDefaultDataSubId = defaultDataSubId;
Log.d(TAG, "DDS: defaultDataSubId:" + mDefaultDataSubId);
if (SubscriptionManager.isUsableSubscriptionId(defaultDataSubId)) { if (SubscriptionManager.isUsableSubscriptionId(defaultDataSubId)) {
mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback); mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
mMobileDataObserver.unregister(mContext); mMobileDataObserver.unregister(mContext);
@@ -160,6 +180,12 @@ public class NetworkProviderWorker extends WifiScanWorker implements
updateSlice(); updateSlice();
} }
@Override
public void onSubscriptionsChanged() {
Log.d(TAG, "onSubscriptionsChanged");
updateListener();
}
@Override @Override
public void onSignalStrengthChanged() { public void onSignalStrengthChanged() {
Log.d(TAG, "onSignalStrengthChanged"); Log.d(TAG, "onSignalStrengthChanged");
@@ -283,7 +309,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
*/ */
public String getNetworkTypeDescription() { public String getNetworkTypeDescription() {
return updateNetworkTypeName(mContext, mConfig, mTelephonyDisplayInfo, return updateNetworkTypeName(mContext, mConfig, mTelephonyDisplayInfo,
mDefaultDataSubid); mDefaultDataSubId);
} }
/** /**