From a02964d26f0aa832e98f99227c59b7d0a7184602 Mon Sep 17 00:00:00 2001 From: Niklas Lindgren Date: Fri, 21 Sep 2018 14:01:57 +0200 Subject: [PATCH] Add dynamic support for 4G/LTE/LTE+ icons Move configuration of show4gForLte and hideLtePlus from resource to CarrierConfig, to better support MVNOs. These icons will be updated upon receiving CarrierConfigChange or in case the default data SIM changes. Test: Add different carrier config values for a carrier and change carrier. Tested on both single and dual sim devices. Bug: 113309357 Bug: 113309356 Change-Id: Ibd34e8948cc5d519626b935545d2c2fb1f771220 --- .../statusbar/policy/NetworkControllerImpl.java | 13 ++++++++++--- .../android/telephony/CarrierConfigManager.java | 16 ++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index c984579f5f9a8..330ee8f9ab81e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -458,6 +458,8 @@ public class NetworkControllerImpl extends BroadcastReceiver MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.handleBroadcast(intent); } + mConfig = Config.readConfig(mContext); + mReceiverHandler.post(this::handleConfigurationChanged); break; case TelephonyIntents.ACTION_SIM_STATE_CHANGED: // Avoid rebroadcast because SysUI is direct boot aware. @@ -1038,18 +1040,23 @@ public class NetworkControllerImpl extends BroadcastReceiver config.showAtLeast3G = res.getBoolean(R.bool.config_showMin3G); config.alwaysShowCdmaRssi = res.getBoolean(com.android.internal.R.bool.config_alwaysUseCdmaRssi); - config.show4gForLte = res.getBoolean(R.bool.config_show4GForLTE); config.hspaDataDistinguishable = res.getBoolean(R.bool.config_hspa_data_distinguishable); - config.hideLtePlus = res.getBoolean(R.bool.config_hideLtePlus); config.inflateSignalStrengths = res.getBoolean(R.bool.config_inflateSignalStrength); CarrierConfigManager configMgr = (CarrierConfigManager) context.getSystemService(Context.CARRIER_CONFIG_SERVICE); - PersistableBundle b = configMgr.getConfig(); + // Handle specific carrier config values for the default data SIM + int defaultDataSubId = SubscriptionManager.from(context) + .getDefaultDataSubscriptionId(); + PersistableBundle b = configMgr.getConfigForSubId(defaultDataSubId); if (b != null) { config.alwaysShowDataRatIcon = b.getBoolean( CarrierConfigManager.KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL); + config.show4gForLte = b.getBoolean( + CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); + config.hideLtePlus = b.getBoolean( + CarrierConfigManager.KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL); } return config; } diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 6eaecc6760bca..5f52f016fdfb6 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -1201,6 +1201,20 @@ public class CarrierConfigManager { public static final String KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL = "always_show_data_rat_icon_bool"; + /** + * Boolean indicating if default data account should show LTE or 4G icon + * @hide + */ + public static final String KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL = + "show_4g_for_lte_data_icon_bool"; + + /** + * Boolean indicating if lte+ icon should be shown if available + * @hide + */ + public static final String KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL = + "hide_lte_plus_data_icon_bool"; + /** * Boolean to decide whether to show precise call failed cause to user * @hide @@ -2466,6 +2480,8 @@ public class CarrierConfigManager { sDefaults.putBoolean(KEY_SHOW_PRECISE_FAILED_CAUSE_BOOL, false); sDefaults.putBoolean(KEY_SPN_DISPLAY_RULE_USE_ROAMING_FROM_SERVICE_STATE_BOOL, false); sDefaults.putBoolean(KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL, false); + sDefaults.putBoolean(KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL, true); + sDefaults.putBoolean(KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL, false); sDefaults.putBoolean(KEY_CARRIER_CONFIG_APPLIED_BOOL, false); sDefaults.putBoolean(KEY_CHECK_PRICING_WITH_CARRIER_FOR_DATA_ROAMING_BOOL, false); sDefaults.putIntArray(KEY_LTE_RSRP_THRESHOLDS_INT_ARRAY,