diff --git a/res/values/config.xml b/res/values/config.xml
index afd6fdd16d2..9e91dcc3c54 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -808,4 +808,8 @@
+
+
+
+
diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java
index 2498ec9407a..83f6c389e79 100644
--- a/src/com/android/settings/network/SubscriptionUtil.java
+++ b/src/com/android/settings/network/SubscriptionUtil.java
@@ -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,13 +559,21 @@ 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
- context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
+ 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));
+ }
}
/**
diff --git a/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.kt b/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.kt
index 64f97305b0c..b7ee41dd50e 100644
--- a/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.kt
+++ b/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.kt
@@ -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
}
}