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
This commit is contained in:
Hyunho
2024-01-12 05:31:31 +00:00
parent 10fa20446c
commit 3d2c417236
2 changed files with 19 additions and 1 deletions

View File

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