Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d2c4172 authored by Hyunho's avatar Hyunho
Browse files

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
parent 10fa2044
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -793,4 +793,8 @@

    <!-- Whether to display pSIM conversion menu in Settings.-->
    <bool name="config_psim_conversion_menu_enabled">false</bool>

    <!-- Array of carrier id to allow the pSIM conversion-->
    <integer-array name="config_psim_conversion_menu_enabled_carrier" translatable="false">
    </integer-array>
</resources>
+15 −1
Original line number Diff line number Diff line
@@ -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());
    }
}