Add carrier config support to operator name in statusbar
Move configuration of showing operator name from resource to carrier config. By moving this to carrier config, this will also support Dual SIM scenario. Bug: 116847905 Test: Add item for carrier in vendor.xml and swap sim cards between ones that have the item enabled and disabled. We have also tested to swap data sim cards on dual sim device. Change-Id: If3b7bbe165c8f0d0305b8ae4f77c91a41a98ca14
This commit is contained in:
committed by
Evan Laird
parent
d9ac8b2a49
commit
7ef2acbf2c
@@ -65,6 +65,7 @@ import android.safetycenter.SafetyCenterManager;
|
||||
import android.service.dreams.DreamService;
|
||||
import android.service.dreams.IDreamManager;
|
||||
import android.telecom.TelecomManager;
|
||||
import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.view.CrossWindowBlurListeners;
|
||||
@@ -450,6 +451,12 @@ public class FrameworkServicesModule {
|
||||
return context.getSystemService(OverlayManager.class);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
static CarrierConfigManager provideCarrierConfigManager(Context context) {
|
||||
return context.getSystemService(CarrierConfigManager.class);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
static WindowManager provideWindowManager(Context context) {
|
||||
|
||||
@@ -21,8 +21,6 @@ import android.widget.TextView;
|
||||
|
||||
import com.android.settingslib.WirelessUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/** Shows the operator name */
|
||||
public class OperatorNameView extends TextView {
|
||||
private boolean mDemoMode;
|
||||
@@ -43,8 +41,10 @@ public class OperatorNameView extends TextView {
|
||||
mDemoMode = demoMode;
|
||||
}
|
||||
|
||||
void update(boolean showOperatorName, boolean hasMobile,
|
||||
List<OperatorNameViewController.SubInfo> subs) {
|
||||
void update(boolean showOperatorName,
|
||||
boolean hasMobile,
|
||||
OperatorNameViewController.SubInfo sub
|
||||
) {
|
||||
setVisibility(showOperatorName ? VISIBLE : GONE);
|
||||
|
||||
boolean airplaneMode = WirelessUtils.isAirplaneModeOn(mContext);
|
||||
@@ -55,24 +55,21 @@ public class OperatorNameView extends TextView {
|
||||
}
|
||||
|
||||
if (!mDemoMode) {
|
||||
updateText(subs);
|
||||
updateText(sub);
|
||||
}
|
||||
}
|
||||
|
||||
void updateText(List<OperatorNameViewController.SubInfo> subs) {
|
||||
void updateText(OperatorNameViewController.SubInfo subInfo) {
|
||||
CharSequence carrierName = null;
|
||||
CharSequence displayText = null;
|
||||
final int N = subs.size();
|
||||
for (int i = 0; i < N; i++) {
|
||||
OperatorNameViewController.SubInfo subInfo = subs.get(i);
|
||||
CharSequence carrierName = subs.get(i).getCarrierName();
|
||||
if (!TextUtils.isEmpty(carrierName) && subInfo.simReady()) {
|
||||
if (subInfo.stateInService()) {
|
||||
displayText = subInfo.getCarrierName();
|
||||
break;
|
||||
}
|
||||
if (subInfo != null) {
|
||||
carrierName = subInfo.getCarrierName();
|
||||
}
|
||||
if (!TextUtils.isEmpty(carrierName) && subInfo.simReady()) {
|
||||
if (subInfo.stateInService()) {
|
||||
displayText = carrierName;
|
||||
}
|
||||
}
|
||||
|
||||
setText(displayText);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
|
||||
import android.os.Bundle;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.view.View;
|
||||
|
||||
@@ -30,12 +31,11 @@ import com.android.systemui.plugins.DarkIconDispatcher;
|
||||
import com.android.systemui.statusbar.connectivity.IconState;
|
||||
import com.android.systemui.statusbar.connectivity.NetworkController;
|
||||
import com.android.systemui.statusbar.connectivity.SignalCallback;
|
||||
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
import com.android.systemui.util.CarrierConfigTracker;
|
||||
import com.android.systemui.util.ViewController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Controller for {@link OperatorNameView}. */
|
||||
@@ -47,19 +47,22 @@ public class OperatorNameViewController extends ViewController<OperatorNameView>
|
||||
private final TunerService mTunerService;
|
||||
private final TelephonyManager mTelephonyManager;
|
||||
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
private final CarrierConfigTracker mCarrierConfigTracker;
|
||||
|
||||
private OperatorNameViewController(OperatorNameView view,
|
||||
DarkIconDispatcher darkIconDispatcher,
|
||||
NetworkController networkController,
|
||||
TunerService tunerService,
|
||||
TelephonyManager telephonyManager,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor) {
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
CarrierConfigTracker carrierConfigTracker) {
|
||||
super(view);
|
||||
mDarkIconDispatcher = darkIconDispatcher;
|
||||
mNetworkController = networkController;
|
||||
mTunerService = tunerService;
|
||||
mTelephonyManager = telephonyManager;
|
||||
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
|
||||
mCarrierConfigTracker = carrierConfigTracker;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,24 +82,22 @@ public class OperatorNameViewController extends ViewController<OperatorNameView>
|
||||
}
|
||||
|
||||
private void update() {
|
||||
mView.update(mTunerService.getValue(KEY_SHOW_OPERATOR_NAME, 1) != 0,
|
||||
mTelephonyManager.isDataCapable(), getSubInfos());
|
||||
SubInfo defaultSubInfo = getDefaultSubInfo();
|
||||
boolean showOperatorName =
|
||||
mCarrierConfigTracker
|
||||
.getShowOperatorNameInStatusBarConfig(defaultSubInfo.getSubId())
|
||||
&& (mTunerService.getValue(KEY_SHOW_OPERATOR_NAME, 1) != 0);
|
||||
mView.update(showOperatorName, mTelephonyManager.isDataCapable(), getDefaultSubInfo());
|
||||
}
|
||||
|
||||
private List<SubInfo> getSubInfos() {
|
||||
List<SubInfo> result = new ArrayList<>();
|
||||
List<SubscriptionInfo> subscritionInfos =
|
||||
mKeyguardUpdateMonitor.getFilteredSubscriptionInfo(false);
|
||||
|
||||
for (SubscriptionInfo subscriptionInfo : subscritionInfos) {
|
||||
int subId = subscriptionInfo.getSubscriptionId();
|
||||
result.add(new SubInfo(
|
||||
subscriptionInfo.getCarrierName(),
|
||||
mKeyguardUpdateMonitor.getSimState(subId),
|
||||
mKeyguardUpdateMonitor.getServiceState(subId)));
|
||||
}
|
||||
|
||||
return result;
|
||||
private SubInfo getDefaultSubInfo() {
|
||||
int defaultSubId = SubscriptionManager.getDefaultDataSubscriptionId();
|
||||
SubscriptionInfo sI = mKeyguardUpdateMonitor.getSubscriptionInfoForSubId(defaultSubId);
|
||||
return new SubInfo(
|
||||
sI.getSubscriptionId(),
|
||||
sI.getCarrierName(),
|
||||
mKeyguardUpdateMonitor.getSimState(defaultSubId),
|
||||
mKeyguardUpdateMonitor.getServiceState(defaultSubId));
|
||||
}
|
||||
|
||||
/** Factory for constructing an {@link OperatorNameViewController}. */
|
||||
@@ -106,22 +107,32 @@ public class OperatorNameViewController extends ViewController<OperatorNameView>
|
||||
private final TunerService mTunerService;
|
||||
private final TelephonyManager mTelephonyManager;
|
||||
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
private final CarrierConfigTracker mCarrierConfigTracker;
|
||||
|
||||
@Inject
|
||||
public Factory(DarkIconDispatcher darkIconDispatcher, NetworkController networkController,
|
||||
TunerService tunerService, TelephonyManager telephonyManager,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor) {
|
||||
public Factory(DarkIconDispatcher darkIconDispatcher,
|
||||
NetworkController networkController,
|
||||
TunerService tunerService,
|
||||
TelephonyManager telephonyManager,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
CarrierConfigTracker carrierConfigTracker) {
|
||||
mDarkIconDispatcher = darkIconDispatcher;
|
||||
mNetworkController = networkController;
|
||||
mTunerService = tunerService;
|
||||
mTelephonyManager = telephonyManager;
|
||||
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
|
||||
mCarrierConfigTracker = carrierConfigTracker;
|
||||
}
|
||||
|
||||
/** Create an {@link OperatorNameViewController}. */
|
||||
public OperatorNameViewController create(OperatorNameView view) {
|
||||
return new OperatorNameViewController(view, mDarkIconDispatcher, mNetworkController,
|
||||
mTunerService, mTelephonyManager, mKeyguardUpdateMonitor);
|
||||
return new OperatorNameViewController(view,
|
||||
mDarkIconDispatcher,
|
||||
mNetworkController,
|
||||
mTunerService,
|
||||
mTelephonyManager,
|
||||
mKeyguardUpdateMonitor,
|
||||
mCarrierConfigTracker);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,7 +163,7 @@ public class OperatorNameViewController extends ViewController<OperatorNameView>
|
||||
new KeyguardUpdateMonitorCallback() {
|
||||
@Override
|
||||
public void onRefreshCarrierInfo() {
|
||||
mView.updateText(getSubInfos());
|
||||
mView.updateText(getDefaultSubInfo());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -176,17 +187,26 @@ public class OperatorNameViewController extends ViewController<OperatorNameView>
|
||||
};
|
||||
|
||||
static class SubInfo {
|
||||
private final int mSubId;
|
||||
private final CharSequence mCarrierName;
|
||||
private final int mSimState;
|
||||
private final ServiceState mServiceState;
|
||||
|
||||
private SubInfo(CharSequence carrierName,
|
||||
int simState, ServiceState serviceState) {
|
||||
private SubInfo(
|
||||
int subId,
|
||||
CharSequence carrierName,
|
||||
int simState,
|
||||
ServiceState serviceState) {
|
||||
mSubId = subId;
|
||||
mCarrierName = carrierName;
|
||||
mSimState = simState;
|
||||
mServiceState = serviceState;
|
||||
}
|
||||
|
||||
int getSubId() {
|
||||
return mSubId;
|
||||
}
|
||||
|
||||
boolean simReady() {
|
||||
return mSimState == TelephonyManager.SIM_STATE_READY;
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ import com.android.systemui.statusbar.policy.BatteryController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
import com.android.systemui.util.CarrierConfigTracker;
|
||||
import com.android.systemui.util.settings.SecureSettings;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
@@ -263,6 +264,7 @@ public abstract class StatusBarViewModule {
|
||||
NetworkController networkController,
|
||||
StatusBarStateController statusBarStateController,
|
||||
CommandQueue commandQueue,
|
||||
CarrierConfigTracker carrierConfigTracker,
|
||||
CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger,
|
||||
OperatorNameViewController.Factory operatorNameViewControllerFactory,
|
||||
SecureSettings secureSettings,
|
||||
@@ -282,6 +284,7 @@ public abstract class StatusBarViewModule {
|
||||
networkController,
|
||||
statusBarStateController,
|
||||
commandQueue,
|
||||
carrierConfigTracker,
|
||||
collapsedStatusBarFragmentLogger,
|
||||
operatorNameViewControllerFactory,
|
||||
secureSettings,
|
||||
|
||||
@@ -32,6 +32,7 @@ import android.database.ContentObserver;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.util.SparseArray;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -69,6 +70,9 @@ import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallListener;
|
||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
|
||||
import com.android.systemui.statusbar.policy.EncryptionHelper;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.util.CarrierConfigTracker;
|
||||
import com.android.systemui.util.CarrierConfigTracker.CarrierConfigChangedListener;
|
||||
import com.android.systemui.util.CarrierConfigTracker.DefaultDataSubscriptionChangedListener;
|
||||
import com.android.systemui.util.settings.SecureSettings;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -115,6 +119,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
private final NotificationIconAreaController mNotificationIconAreaController;
|
||||
private final PanelExpansionStateManager mPanelExpansionStateManager;
|
||||
private final StatusBarIconController mStatusBarIconController;
|
||||
private final CarrierConfigTracker mCarrierConfigTracker;
|
||||
private final StatusBarHideIconsForBouncerManager mStatusBarHideIconsForBouncerManager;
|
||||
private final SecureSettings mSecureSettings;
|
||||
private final Executor mMainExecutor;
|
||||
@@ -137,6 +142,28 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
private OperatorNameViewController mOperatorNameViewController;
|
||||
private StatusBarSystemEventAnimator mSystemEventAnimator;
|
||||
|
||||
private final CarrierConfigChangedListener mCarrierConfigCallback =
|
||||
new CarrierConfigChangedListener() {
|
||||
@Override
|
||||
public void onCarrierConfigChanged() {
|
||||
if (mOperatorNameViewController == null) {
|
||||
initOperatorName();
|
||||
} else {
|
||||
// Already initialized, KeyguardUpdateMonitorCallback will handle the update
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private final DefaultDataSubscriptionChangedListener mDefaultDataListener =
|
||||
new DefaultDataSubscriptionChangedListener() {
|
||||
@Override
|
||||
public void onDefaultSubscriptionChanged(int subId) {
|
||||
if (mOperatorNameViewController == null) {
|
||||
initOperatorName();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@SuppressLint("ValidFragment")
|
||||
public CollapsedStatusBarFragment(
|
||||
StatusBarFragmentComponent.Factory statusBarFragmentComponentFactory,
|
||||
@@ -153,6 +180,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
NetworkController networkController,
|
||||
StatusBarStateController statusBarStateController,
|
||||
CommandQueue commandQueue,
|
||||
CarrierConfigTracker carrierConfigTracker,
|
||||
CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger,
|
||||
OperatorNameViewController.Factory operatorNameViewControllerFactory,
|
||||
SecureSettings secureSettings,
|
||||
@@ -172,6 +200,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
mNetworkController = networkController;
|
||||
mStatusBarStateController = statusBarStateController;
|
||||
mCommandQueue = commandQueue;
|
||||
mCarrierConfigTracker = carrierConfigTracker;
|
||||
mCollapsedStatusBarFragmentLogger = collapsedStatusBarFragmentLogger;
|
||||
mOperatorNameViewControllerFactory = operatorNameViewControllerFactory;
|
||||
mSecureSettings = secureSettings;
|
||||
@@ -212,6 +241,8 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
initNotificationIconArea();
|
||||
mSystemEventAnimator =
|
||||
new StatusBarSystemEventAnimator(mSystemIconArea, getResources());
|
||||
mCarrierConfigTracker.addCallback(mCarrierConfigCallback);
|
||||
mCarrierConfigTracker.addDefaultDataSubscriptionChangedListener(mDefaultDataListener);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -283,6 +314,8 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
if (mNetworkController.hasEmergencyCryptKeeperText()) {
|
||||
mNetworkController.removeCallback(mSignalCallback);
|
||||
}
|
||||
mCarrierConfigTracker.removeCallback(mCarrierConfigCallback);
|
||||
mCarrierConfigTracker.removeDataSubscriptionChangedListener(mDefaultDataListener);
|
||||
}
|
||||
|
||||
/** Initializes views related to the notification icon area. */
|
||||
@@ -569,11 +602,16 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
}
|
||||
|
||||
private void initOperatorName() {
|
||||
if (getResources().getBoolean(R.bool.config_showOperatorNameInStatusBar)) {
|
||||
int subId = SubscriptionManager.getDefaultDataSubscriptionId();
|
||||
if (mCarrierConfigTracker.getShowOperatorNameInStatusBarConfig(subId)) {
|
||||
ViewStub stub = mStatusBar.findViewById(R.id.operator_name);
|
||||
mOperatorNameViewController =
|
||||
mOperatorNameViewControllerFactory.create((OperatorNameView) stub.inflate());
|
||||
mOperatorNameViewController.init();
|
||||
// This view should not be visible on lock-screen
|
||||
if (mKeyguardStateController.isShowing()) {
|
||||
hideOperatorName(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,43 +23,73 @@ import android.content.IntentFilter;
|
||||
import android.os.PersistableBundle;
|
||||
import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.util.ArraySet;
|
||||
import android.util.SparseBooleanArray;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.internal.telephony.TelephonyIntents;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.statusbar.policy.CallbackController;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* Tracks the Carrier Config values.
|
||||
* Tracks CarrierConfigs for each subId, as well as the default configuration. CarrierConfigurations
|
||||
* do not trigger a device configuration event, so any UI that relies on carrier configurations must
|
||||
* register with the tracker to get proper updates.
|
||||
*
|
||||
* The tracker also listens for `TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED`
|
||||
*
|
||||
* @see CarrierConfigChangedListener to listen for updates
|
||||
*/
|
||||
@SysUISingleton
|
||||
public class CarrierConfigTracker extends BroadcastReceiver {
|
||||
public class CarrierConfigTracker
|
||||
extends BroadcastReceiver
|
||||
implements CallbackController<CarrierConfigTracker.CarrierConfigChangedListener> {
|
||||
private final SparseBooleanArray mCallStrengthConfigs = new SparseBooleanArray();
|
||||
private final SparseBooleanArray mNoCallingConfigs = new SparseBooleanArray();
|
||||
private final SparseBooleanArray mCarrierProvisionsWifiMergedNetworks =
|
||||
new SparseBooleanArray();
|
||||
private final SparseBooleanArray mShowOperatorNameConfigs = new SparseBooleanArray();
|
||||
private final CarrierConfigManager mCarrierConfigManager;
|
||||
private final Set<CarrierConfigChangedListener> mListeners = new ArraySet<>();
|
||||
private final Set<DefaultDataSubscriptionChangedListener> mDataListeners =
|
||||
new ArraySet<>();
|
||||
private boolean mDefaultCallStrengthConfigLoaded;
|
||||
private boolean mDefaultCallStrengthConfig;
|
||||
private boolean mDefaultNoCallingConfigLoaded;
|
||||
private boolean mDefaultNoCallingConfig;
|
||||
private boolean mDefaultCarrierProvisionsWifiMergedNetworksLoaded;
|
||||
private boolean mDefaultCarrierProvisionsWifiMergedNetworks;
|
||||
private boolean mDefaultShowOperatorNameConfigLoaded;
|
||||
private boolean mDefaultShowOperatorNameConfig;
|
||||
|
||||
@Inject
|
||||
public CarrierConfigTracker(Context context, BroadcastDispatcher broadcastDispatcher) {
|
||||
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
|
||||
broadcastDispatcher.registerReceiver(
|
||||
this, new IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED));
|
||||
public CarrierConfigTracker(
|
||||
CarrierConfigManager carrierConfigManager,
|
||||
BroadcastDispatcher broadcastDispatcher) {
|
||||
mCarrierConfigManager = carrierConfigManager;
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
|
||||
filter.addAction(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
|
||||
broadcastDispatcher.registerReceiver(this, filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (!CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED.equals(intent.getAction())) {
|
||||
return;
|
||||
String action = intent.getAction();
|
||||
if (CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED.equals(action)) {
|
||||
updateFromNewCarrierConfig(intent);
|
||||
} else if (TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED.equals(action)) {
|
||||
updateDefaultDataSubscription(intent);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFromNewCarrierConfig(Intent intent) {
|
||||
final int subId = intent.getIntExtra(
|
||||
CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX,
|
||||
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||
@@ -84,6 +114,29 @@ public class CarrierConfigTracker extends BroadcastReceiver {
|
||||
mCarrierProvisionsWifiMergedNetworks.put(subId, config.getBoolean(
|
||||
CarrierConfigManager.KEY_CARRIER_PROVISIONS_WIFI_MERGED_NETWORKS_BOOL));
|
||||
}
|
||||
synchronized (mShowOperatorNameConfigs) {
|
||||
mShowOperatorNameConfigs.put(subId, config.getBoolean(
|
||||
CarrierConfigManager.KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL));
|
||||
}
|
||||
|
||||
notifyCarrierConfigChanged();
|
||||
}
|
||||
|
||||
private void updateDefaultDataSubscription(Intent intent) {
|
||||
int subId = intent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, -1);
|
||||
notifyDefaultDataSubscriptionChanged(subId);
|
||||
}
|
||||
|
||||
private void notifyCarrierConfigChanged() {
|
||||
for (CarrierConfigChangedListener l : mListeners) {
|
||||
l.onCarrierConfigChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void notifyDefaultDataSubscriptionChanged(int subId) {
|
||||
for (DefaultDataSubscriptionChangedListener l : mDataListeners) {
|
||||
l.onDefaultSubscriptionChanged(subId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -139,4 +192,73 @@ public class CarrierConfigTracker extends BroadcastReceiver {
|
||||
}
|
||||
return mDefaultCarrierProvisionsWifiMergedNetworks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL value for the default config
|
||||
*/
|
||||
public boolean getShowOperatorNameInStatusBarConfigDefault() {
|
||||
if (!mDefaultShowOperatorNameConfigLoaded) {
|
||||
mDefaultShowOperatorNameConfig = CarrierConfigManager.getDefaultConfig().getBoolean(
|
||||
CarrierConfigManager.KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL);
|
||||
mDefaultShowOperatorNameConfigLoaded = true;
|
||||
}
|
||||
|
||||
return mDefaultShowOperatorNameConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL value for the given subId, or the
|
||||
* default value if no override exists
|
||||
*
|
||||
* @param subId the subscription id for which to query the config
|
||||
*/
|
||||
public boolean getShowOperatorNameInStatusBarConfig(int subId) {
|
||||
if (mShowOperatorNameConfigs.indexOfKey(subId) >= 0) {
|
||||
return mShowOperatorNameConfigs.get(subId);
|
||||
} else {
|
||||
return getShowOperatorNameInStatusBarConfigDefault();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCallback(@NonNull CarrierConfigChangedListener listener) {
|
||||
mListeners.add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeCallback(@NonNull CarrierConfigChangedListener listener) {
|
||||
mListeners.remove(listener);
|
||||
}
|
||||
|
||||
/** */
|
||||
public void addDefaultDataSubscriptionChangedListener(
|
||||
@NonNull DefaultDataSubscriptionChangedListener listener) {
|
||||
mDataListeners.add(listener);
|
||||
}
|
||||
|
||||
/** */
|
||||
public void removeDataSubscriptionChangedListener(
|
||||
DefaultDataSubscriptionChangedListener listener) {
|
||||
mDataListeners.remove(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when carrier config changes
|
||||
*/
|
||||
public interface CarrierConfigChangedListener {
|
||||
/** */
|
||||
void onCarrierConfigChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the default data subscription changes. Listeners may want to query
|
||||
* subId-dependent configuration values when this event happens
|
||||
*/
|
||||
public interface DefaultDataSubscriptionChangedListener {
|
||||
/**
|
||||
* @param subId the new default data subscription id per
|
||||
* {@link SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX}
|
||||
*/
|
||||
void onDefaultSubscriptionChanged(int subId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,6 +59,7 @@ import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentCom
|
||||
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
|
||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.util.CarrierConfigTracker;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.settings.SecureSettings;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
@@ -90,6 +91,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
|
||||
private OperatorNameViewController mOperatorNameViewController;
|
||||
private SecureSettings mSecureSettings;
|
||||
private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
private final CarrierConfigTracker mCarrierConfigTracker = mock(CarrierConfigTracker.class);
|
||||
|
||||
@Mock
|
||||
private StatusBarFragmentComponent.Factory mStatusBarFragmentComponentFactory;
|
||||
@@ -373,6 +375,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
|
||||
mNetworkController,
|
||||
mStatusBarStateController,
|
||||
mCommandQueue,
|
||||
mCarrierConfigTracker,
|
||||
new CollapsedStatusBarFragmentLogger(
|
||||
new LogBuffer("TEST", 1, 1, mock(LogcatEchoTracker.class)),
|
||||
new DisableFlagsLogger()
|
||||
|
||||
@@ -1958,6 +1958,13 @@ public class CarrierConfigManager {
|
||||
public static final String KEY_NR_ADVANCED_THRESHOLD_BANDWIDTH_KHZ_INT =
|
||||
"nr_advanced_threshold_bandwidth_khz_int";
|
||||
|
||||
/**
|
||||
* Boolean indicating if operator name should be shown in the status bar
|
||||
* @hide
|
||||
*/
|
||||
public static final String KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL =
|
||||
"show_operator_name_in_statusbar_bool";
|
||||
|
||||
/**
|
||||
* The string is used to filter redundant string from PLMN Network Name that's supplied by
|
||||
* specific carrier.
|
||||
@@ -8909,6 +8916,7 @@ public class CarrierConfigManager {
|
||||
sDefaults.putStringArray(KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY, null);
|
||||
sDefaults.putBoolean(KEY_WORLD_MODE_ENABLED_BOOL, false);
|
||||
sDefaults.putString(KEY_CARRIER_SETTINGS_ACTIVITY_COMPONENT_NAME_STRING, "");
|
||||
sDefaults.putBoolean(KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL, false);
|
||||
sDefaults.putBoolean(KEY_CARRIER_CONFIG_APPLIED_BOOL, false);
|
||||
sDefaults.putBoolean(KEY_CHECK_PRICING_WITH_CARRIER_FOR_DATA_ROAMING_BOOL, false);
|
||||
sDefaults.putBoolean(KEY_SHOW_DATA_CONNECTED_ROAMING_NOTIFICATION_BOOL, false);
|
||||
|
||||
Reference in New Issue
Block a user