Merge "Add carrier config support to operator name in statusbar" into tm-dev

This commit is contained in:
Evan Laird
2022-04-06 21:22:29 +00:00
committed by Android (Google) Code Review
8 changed files with 251 additions and 53 deletions

View File

@@ -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) {

View File

@@ -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);
}
}

View File

@@ -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;
}

View File

@@ -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,

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}

View File

@@ -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()

View File

@@ -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.
@@ -8913,6 +8920,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);