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