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

Commit be1c70a8 authored by Rafael Higuera Silva's avatar Rafael Higuera Silva Committed by Android (Google) Code Review
Browse files

Merge "Add new dialogue and RAC logic." into main

parents 4de688db 48fee33e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -808,4 +808,8 @@
    <!-- Array of carrier id to allow the pSIM conversion-->
    <integer-array name="config_psim_conversion_menu_enabled_carrier" translatable="false">
    </integer-array>

    <!-- Array of carrier id that uses reusable activation code-->
    <integer-array name="config_carrier_use_rac" translatable="false">
    </integer-array>
</resources>
+13 −3
Original line number Diff line number Diff line
@@ -49,9 +49,11 @@ import com.android.settings.flags.Flags;
import com.android.settings.network.helper.SelectableSubscriptions;
import com.android.settings.network.helper.SubscriptionAnnotation;
import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity;
import com.android.settings.network.telephony.EuiccRacConnectivityDialogActivity;
import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -557,14 +559,22 @@ public class SubscriptionUtil {
     * @param context {@code Context}
     * @param subId The id of subscription need to be deleted.
     */
    public static void startDeleteEuiccSubscriptionDialogActivity(Context context, int subId) {
    public static void startDeleteEuiccSubscriptionDialogActivity(Context context, int subId,
            int carrierId) {
        if (!SubscriptionManager.isUsableSubscriptionId(subId)) {
            Log.i(TAG, "Unable to delete subscription due to invalid subscription ID.");
            return;
        }
        // TODO(b/325693582): Add verification if carrier is RAC and logic for new dialog
        final int[] carriersThatUseRAC = context.getResources().getIntArray(
                R.array.config_carrier_use_rac);
        boolean isCarrierRac = Arrays.stream(carriersThatUseRAC).anyMatch(cid -> cid == carrierId);

        if (isCarrierRac && !isConnectedToWifiOrDifferentSubId(context, subId)) {
            context.startActivity(EuiccRacConnectivityDialogActivity.getIntent(context, subId));
        } else {
            context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
        }
    }

    /**
     * Finds and returns a subscription with a specific subscription ID.
+6 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
class DeleteSimProfilePreferenceController(context: Context, preferenceKey: String) :
    BasePreferenceController(context, preferenceKey) {
    private var subscriptionId: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID
    private var carrierId: Int = TelephonyManager.UNKNOWN_CARRIER_ID
    private var subscriptionInfo: SubscriptionInfo? = null
    private lateinit var preference: Preference

@@ -40,6 +41,9 @@ class DeleteSimProfilePreferenceController(context: Context, preferenceKey: Stri
        this.subscriptionId = subscriptionId
        subscriptionInfo = SubscriptionUtil.getAvailableSubscriptions(mContext)
            .find { it.subscriptionId == subscriptionId && it.isEmbedded }
        subscriptionInfo?.let {
            carrierId = it.carrierId
        }
    }

    override fun getAvailabilityStatus() = when (subscriptionInfo) {
@@ -67,7 +71,8 @@ class DeleteSimProfilePreferenceController(context: Context, preferenceKey: Stri
    }

    private fun deleteSim() {
        SubscriptionUtil.startDeleteEuiccSubscriptionDialogActivity(mContext, subscriptionId)
        SubscriptionUtil.startDeleteEuiccSubscriptionDialogActivity(mContext, subscriptionId,
                carrierId)
        // result handled in MobileNetworkSettings
    }
}