[Settings] Customizable resource for hiding 3G preferred network type

Add a customiazble resource for specifying the carriers that avoiding
from showing 3G option within the preferred network type.

Bug: 261615630
Bug: 247995343
Bug: 268564499
Bug: 265147144
Bug: 267433657
Bug: 240176276
Bug: 266724047
Bug: 265147263
Bug: 242017692
Bug: 220998105
Bug: 209835551
Bug: 237837196
Bug: 239318933
Bug: 247996564
Test: local

Merged-In: I8092372372cb334b5ac1956b869d194b9fcd0523
Merged-In: I5c12ad23a240fbe70630855e5f98b5be83912674
Change-Id: I8092372372cb334b5ac1956b869d194b9fcd0523
This commit is contained in:
Bonian Chen
2023-02-23 04:53:05 +00:00
committed by SongFerng Wang
parent 64fd489c13
commit 28367dae4d
2 changed files with 24 additions and 0 deletions

View File

@@ -1654,4 +1654,9 @@
[CHAR LIMIT=NONE] -->
<string-array name="allowlist_hide_summary_in_battery_usage" translatable="false">
</string-array>
<!-- hide 3G option from preferred network type UI -->
<integer-array name="network_mode_3g_deprecated_carrier_id" translatable="false">
</integer-array>
</resources>

View File

@@ -22,6 +22,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
import android.content.Context;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
@@ -239,6 +240,24 @@ public class EnabledNetworkModePreferenceController extends
// TODO: Using the carrier config.
mDisplay3gOptions = getResourcesForSubId().getBoolean(
R.bool.config_display_network_mode_3g_option);
int[] carriersWithout3gMenu = getResourcesForSubId().getIntArray(
R.array.network_mode_3g_deprecated_carrier_id);
if ((carriersWithout3gMenu != null) && (carriersWithout3gMenu.length > 0)) {
SubscriptionManager sm = mContext.getSystemService(SubscriptionManager.class);
SubscriptionInfo subInfo = sm.getActiveSubscriptionInfo(mSubId);
if (subInfo != null) {
int carrierId = subInfo.getCarrierId();
for (int idx = 0; idx < carriersWithout3gMenu.length; idx++) {
if (carrierId == carriersWithout3gMenu[idx]) {
mDisplay3gOptions = false;
break;
}
}
}
}
mLteEnabled = carrierConfig.getBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL);
}
Log.d(LOG_TAG, "PreferenceEntriesBuilder: subId" + mSubId