Add new dialogue and RAC logic.
A new dialogue will pop up if the eSIM that is being deleted has carrier Vodafone DE and does not have wifi connection or connection from another sim. Test: make, atest SubscriptionUtilTest and tested manually Bug: 316419093 Change-Id: I957b67339a0ab651f38984e7d1061a8aff8fe2a1
This commit is contained in:
@@ -808,4 +808,8 @@
|
|||||||
<!-- Array of carrier id to allow the pSIM conversion-->
|
<!-- Array of carrier id to allow the pSIM conversion-->
|
||||||
<integer-array name="config_psim_conversion_menu_enabled_carrier" translatable="false">
|
<integer-array name="config_psim_conversion_menu_enabled_carrier" translatable="false">
|
||||||
</integer-array>
|
</integer-array>
|
||||||
|
|
||||||
|
<!-- Array of carrier id that uses reusable activation code-->
|
||||||
|
<integer-array name="config_carrier_use_rac" translatable="false">
|
||||||
|
</integer-array>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -49,9 +49,11 @@ import com.android.settings.flags.Flags;
|
|||||||
import com.android.settings.network.helper.SelectableSubscriptions;
|
import com.android.settings.network.helper.SelectableSubscriptions;
|
||||||
import com.android.settings.network.helper.SubscriptionAnnotation;
|
import com.android.settings.network.helper.SubscriptionAnnotation;
|
||||||
import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity;
|
import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity;
|
||||||
|
import com.android.settings.network.telephony.EuiccRacConnectivityDialogActivity;
|
||||||
import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity;
|
import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -557,13 +559,21 @@ public class SubscriptionUtil {
|
|||||||
* @param context {@code Context}
|
* @param context {@code Context}
|
||||||
* @param subId The id of subscription need to be deleted.
|
* @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)) {
|
if (!SubscriptionManager.isUsableSubscriptionId(subId)) {
|
||||||
Log.i(TAG, "Unable to delete subscription due to invalid subscription ID.");
|
Log.i(TAG, "Unable to delete subscription due to invalid subscription ID.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// TODO(b/325693582): Add verification if carrier is RAC and logic for new dialog
|
final int[] carriersThatUseRAC = context.getResources().getIntArray(
|
||||||
context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -33,6 +33,7 @@ import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
|
|||||||
class DeleteSimProfilePreferenceController(context: Context, preferenceKey: String) :
|
class DeleteSimProfilePreferenceController(context: Context, preferenceKey: String) :
|
||||||
BasePreferenceController(context, preferenceKey) {
|
BasePreferenceController(context, preferenceKey) {
|
||||||
private var subscriptionId: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
private var subscriptionId: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||||
|
private var carrierId: Int = TelephonyManager.UNKNOWN_CARRIER_ID
|
||||||
private var subscriptionInfo: SubscriptionInfo? = null
|
private var subscriptionInfo: SubscriptionInfo? = null
|
||||||
private lateinit var preference: Preference
|
private lateinit var preference: Preference
|
||||||
|
|
||||||
@@ -40,6 +41,9 @@ class DeleteSimProfilePreferenceController(context: Context, preferenceKey: Stri
|
|||||||
this.subscriptionId = subscriptionId
|
this.subscriptionId = subscriptionId
|
||||||
subscriptionInfo = SubscriptionUtil.getAvailableSubscriptions(mContext)
|
subscriptionInfo = SubscriptionUtil.getAvailableSubscriptions(mContext)
|
||||||
.find { it.subscriptionId == subscriptionId && it.isEmbedded }
|
.find { it.subscriptionId == subscriptionId && it.isEmbedded }
|
||||||
|
subscriptionInfo?.let {
|
||||||
|
carrierId = it.carrierId
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getAvailabilityStatus() = when (subscriptionInfo) {
|
override fun getAvailabilityStatus() = when (subscriptionInfo) {
|
||||||
@@ -67,7 +71,8 @@ class DeleteSimProfilePreferenceController(context: Context, preferenceKey: Stri
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteSim() {
|
private fun deleteSim() {
|
||||||
SubscriptionUtil.startDeleteEuiccSubscriptionDialogActivity(mContext, subscriptionId)
|
SubscriptionUtil.startDeleteEuiccSubscriptionDialogActivity(mContext, subscriptionId,
|
||||||
|
carrierId)
|
||||||
// result handled in MobileNetworkSettings
|
// result handled in MobileNetworkSettings
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user