From 3d2c417236e49b851697cc60ab9f92b68092d733 Mon Sep 17 00:00:00 2001 From: Hyunho Date: Fri, 12 Jan 2024 05:31:31 +0000 Subject: [PATCH] Add the condtions to show the pSIM conversion menu if the value of carrier config and current SIM's carrier is matched, then the pSIM conversion menu will show Bug: b/319527964 Test: manual test (b/319527964#comment3) Change-Id: I82025447f43c0151ba58edd77c6f8b7e8aff660d --- res/values/config.xml | 4 ++++ .../ConvertToEsimPreferenceController.java | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/res/values/config.xml b/res/values/config.xml index 6f784dd7705..f3e2a7ac042 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -793,4 +793,8 @@ false + + + + diff --git a/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java b/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java index 27b8c16e109..441c2498152 100644 --- a/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java +++ b/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java @@ -51,6 +51,7 @@ import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceController implements @@ -111,7 +112,8 @@ public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceCo * To avoid showing users dialogs that can cause confusion, * add conditions to allow conversion in the absence of active eSIM. */ - if (!mContext.getResources().getBoolean(R.bool.config_psim_conversion_menu_enabled)) { + if (!mContext.getResources().getBoolean(R.bool.config_psim_conversion_menu_enabled) + || !isPsimConversionSupport(subId)) { return CONDITIONALLY_UNAVAILABLE; } if (findConversionSupportComponent()) { @@ -238,4 +240,16 @@ public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceCo } return true; } + + private boolean isPsimConversionSupport(int subId) { + SubscriptionManager subscriptionManager = mContext.getSystemService( + SubscriptionManager.class); + SubscriptionInfo subInfo = subscriptionManager.getActiveSubscriptionInfo(subId); + if (subInfo == null) { + return false; + } + final int[] supportedCarriers = mContext.getResources().getIntArray( + R.array.config_psim_conversion_menu_enabled_carrier); + return Arrays.stream(supportedCarriers).anyMatch(id -> id == subInfo.getCarrierId()); + } }