[Settings] Remove the intent receiver due to the register exception

Bug: 274899027
Test: atest SystemUIMicrobenchmark:android.platform.test.scenario.sysui.quicksettings
Change-Id: Ia19b91cfd1073f22180cc9679025447b4d5fecd9
This commit is contained in:
Zoey Chen
2023-03-28 13:23:33 +00:00
parent 600261a484
commit cf88640701
15 changed files with 277 additions and 139 deletions

View File

@@ -27,9 +27,7 @@ import static com.android.settings.network.InternetUpdater.INTERNET_WIFI;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.util.Log;
import androidx.annotation.IdRes;
import androidx.annotation.VisibleForTesting;
@@ -45,9 +43,7 @@ import com.android.settings.widget.SummaryUpdater;
import com.android.settings.wifi.WifiSummaryUpdater;
import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity;
import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity;
import com.android.settingslib.mobile.dataservice.UiccInfoEntity;
import com.android.settingslib.utils.ThreadUtils;
import java.util.ArrayList;
@@ -60,7 +56,8 @@ import java.util.Map;
*/
public class InternetPreferenceController extends AbstractPreferenceController implements
LifecycleObserver, SummaryUpdater.OnSummaryChangeListener,
InternetUpdater.InternetChangeListener, MobileNetworkRepository.MobileNetworkCallback {
InternetUpdater.InternetChangeListener, MobileNetworkRepository.MobileNetworkCallback,
DefaultSubscriptionReceiver.DefaultSubscriptionListener {
public static final String KEY = "internet_settings";
@@ -71,6 +68,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i
private LifecycleOwner mLifecycleOwner;
private MobileNetworkRepository mMobileNetworkRepository;
private List<SubscriptionInfoEntity> mSubInfoEntityList = new ArrayList<>();
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private DefaultSubscriptionReceiver mDataSubscriptionChangedReceiver;
@VisibleForTesting
static Map<Integer, Integer> sIconMap = new HashMap<>();
@@ -102,6 +101,7 @@ public class InternetPreferenceController extends AbstractPreferenceController i
mInternetType = mInternetUpdater.getInternetType();
mLifecycleOwner = lifecycleOwner;
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this);
lifecycle.addObserver(this);
}
@@ -160,6 +160,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mMobileNetworkRepository.updateEntity();
mSummaryHelper.register(true);
mDataSubscriptionChangedReceiver.registerReceiver();
mDefaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
}
/** @OnLifecycleEvent(ON_PAUSE) */
@@ -167,6 +169,7 @@ public class InternetPreferenceController extends AbstractPreferenceController i
public void onPause() {
mMobileNetworkRepository.removeRegister(this);
mSummaryHelper.register(false);
mDataSubscriptionChangedReceiver.unRegisterReceiver();
}
/**
@@ -212,11 +215,11 @@ public class InternetPreferenceController extends AbstractPreferenceController i
if (subInfo.isActiveDataSubscriptionId) {
activeSubInfo = subInfo;
}
if (subInfo.isDefaultDataSubscription) {
if (subInfo.getSubId() == getDefaultDataSubscriptionId()) {
defaultSubInfo = subInfo;
}
}
if (activeSubInfo == null) {
if (activeSubInfo == null || defaultSubInfo == null) {
return;
}
activeSubInfo = activeSubInfo.isSubscriptionVisible ? activeSubInfo : defaultSubInfo;
@@ -237,9 +240,20 @@ public class InternetPreferenceController extends AbstractPreferenceController i
return mSubInfoEntityList;
}
@VisibleForTesting
protected int getDefaultDataSubscriptionId() {
return mDefaultDataSubId;
}
@Override
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
mSubInfoEntityList = subInfoEntityList;
updateState(mPreference);
}
@Override
public void onDefaultDataChanged(int defaultDataSubId) {
mDefaultDataSubId = defaultDataSubId;
updateState(mPreference);
}
}