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:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user