Override Carrier 2032 5G plus network type
- Add config to override Carrier 2032 network type "5G+"
Bug: 377907543
Flag: EXEMPT bugfix
Test: Manual testing
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:1df5b322339685ed14c1446571b54a0165ab6962)
Merged-In: I83302a7fd8a860dd0c2acd76b6142ea1aa5b6ae5
Change-Id: I83302a7fd8a860dd0c2acd76b6142ea1aa5b6ae5
diff --git a/packages/SettingsLib/res/values/config.xml b/packages/SettingsLib/res/values/config.xml
index 3c3de04..502eb6c 100644
--- a/packages/SettingsLib/res/values/config.xml
+++ b/packages/SettingsLib/res/values/config.xml
@@ -41,4 +41,15 @@
<string name="config_avatar_picker_class" translatable="false">
com.android.avatarpicker.ui.AvatarPickerActivity
</string>
+
+ <array name="config_override_carrier_5g_plus">
+ <item>@array/carrier_2032_5g_plus</item>
+ </array>
+
+ <integer-array name="carrier_2032_5g_plus">
+ <!-- carrier id: 2032 -->
+ <item>2032</item>
+ <!-- network type: "5G+" -->
+ <item>@string/data_connection_5g_plus_carrier_2032</item>
+ </integer-array>
</resources>
\ No newline at end of file
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index eaf155d..0cb4f2d 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -1718,6 +1718,8 @@
<!-- Content description of the data connection type 5G+. [CHAR LIMIT=NONE] -->
<string name="data_connection_5g_plus" translatable="false">5G+</string>
+ <!-- Content description of the data connection type 5G+ for carrier 2032. [CHAR LIMIT=NONE] -->
+ <string name="data_connection_5g_plus_carrier_2032" translatable="false">5G+</string>
<!-- Content description of the data connection type Carrier WiFi. [CHAR LIMIT=NONE] -->
<string name="data_connection_carrier_wifi">W+</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java b/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java
index b7108c9..cf52eb3 100644
--- a/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java
+++ b/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java
@@ -15,11 +15,14 @@
*/
package com.android.settingslib.mobile;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Resources;
+import android.content.res.TypedArray;
import android.os.PersistableBundle;
import android.telephony.Annotation;
import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyDisplayInfo;
import android.telephony.TelephonyManager;
@@ -196,9 +199,9 @@
networkToIconLookup.put(toDisplayIconKey(
TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA),
TelephonyIcons.NR_5G);
- networkToIconLookup.put(toDisplayIconKey(
- TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED),
- TelephonyIcons.NR_5G_PLUS);
+ networkToIconLookup.put(
+ toDisplayIconKey(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED),
+ config.mobileIconGroup5gPlus);
networkToIconLookup.put(toIconKey(
TelephonyManager.NETWORK_TYPE_NR),
TelephonyIcons.NR_5G);
@@ -217,6 +220,7 @@
public boolean hideLtePlus = false;
public boolean hspaDataDistinguishable;
public boolean alwaysShowDataRatIcon = false;
+ public MobileIconGroup mobileIconGroup5gPlus = TelephonyIcons.NR_5G_PLUS;
/**
* Reads the latest configs.
@@ -250,9 +254,54 @@
config.hideLtePlus = b.getBoolean(
CarrierConfigManager.KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL);
}
+
+ SubscriptionManager subscriptionManager =
+ context.getSystemService(SubscriptionManager.class);
+ if (subscriptionManager != null) {
+ SubscriptionInfo subInfo = subscriptionManager.getDefaultDataSubscriptionInfo();
+ if (subInfo != null) {
+ readMobileIconGroup5gPlus(subInfo.getCarrierId(), res, config);
+ }
+ }
return config;
}
+ @SuppressLint("ResourceType")
+ private static void readMobileIconGroup5gPlus(int carrierId, Resources res, Config config) {
+ int networkTypeResId = 0;
+ TypedArray groupArray;
+ try {
+ groupArray = res.obtainTypedArray(R.array.config_override_carrier_5g_plus);
+ } catch (Resources.NotFoundException e) {
+ return;
+ }
+ for (int i = 0; i < groupArray.length() && networkTypeResId == 0; i++) {
+ int groupId = groupArray.getResourceId(i, 0);
+ if (groupId == 0) {
+ continue;
+ }
+ TypedArray carrierArray;
+ try {
+ carrierArray = res.obtainTypedArray(groupId);
+ } catch (Resources.NotFoundException e) {
+ continue;
+ }
+ int groupCarrierId = carrierArray.getInt(0, 0);
+ if (groupCarrierId == carrierId) {
+ networkTypeResId = carrierArray.getResourceId(1, 0);
+ }
+ carrierArray.recycle();
+ }
+ groupArray.recycle();
+
+ if (networkTypeResId != 0) {
+ config.mobileIconGroup5gPlus = new MobileIconGroup(
+ TelephonyIcons.NR_5G_PLUS.name,
+ networkTypeResId,
+ TelephonyIcons.NR_5G_PLUS.dataType);
+ }
+ }
+
/**
* Returns true if this config and the other config are semantically equal.
*