[SIM Dialog Migration] Enable SIM operation dialog in Settings

Change Settings to not call SubscriptionManager#setSubscriptionEnabled.
Instead, make Settings call EuiccManager APIs directly.
Design: https://docs.google.com/document/d/1wb5_hoBkZVbkXGNWHbx4Jf61swjfxsJzkytiTzJosYo/edit?usp=sharing
Bug: 160819390
Test: Manually tested eSIM profile enabling.

Change-Id: I56bbcbb9ccb886b0f9249e67c5a6a6444bb7dd45
This commit is contained in:
Jiashen Wang
2020-11-18 17:19:36 -08:00
parent 0d31082631
commit 8271561a76
6 changed files with 54 additions and 10 deletions

View File

@@ -128,7 +128,7 @@ public class MobileNetworkListController extends AbstractPreferenceController im
pref.setOnPreferenceClickListener(clickedPref -> {
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
mSubscriptionManager.setSubscriptionEnabled(subId, true);
SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, subId, true);
} else {
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());

View File

@@ -189,7 +189,8 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
final int subId = info.getSubscriptionId();
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
mSubscriptionManager.setSubscriptionEnabled(subId, true);
SubscriptionUtil.startToggleSubscriptionDialogActivity(
mContext, subId, true);
} else {
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
intent.putExtra(Settings.EXTRA_SUB_ID, subs.get(0).getSubscriptionId());

View File

@@ -28,6 +28,7 @@ import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.UiccSlotInfo;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
@@ -284,14 +285,31 @@ public class SubscriptionUtil {
}
}
/** Starts a dialog activity to handle SIM enabling/disabling. */
/**
* Starts a dialog activity to handle SIM enabling/disabling.
* @param context {@code Context}
* @param subId The id of subscription need to be enabled or disabled.
* @param enable Whether the subscription with {@code subId} should be enabled or disabled.
*/
public static void startToggleSubscriptionDialogActivity(
Context context, int subId, boolean enable) {
if (!SubscriptionManager.isUsableSubscriptionId(subId)) {
Log.i(TAG, "Unable to toggle subscription due to invalid subscription ID.");
return;
}
context.startActivity(ToggleSubscriptionDialogActivity.getIntent(context, subId, enable));
}
/** Starts a dialog activity to handle eSIM deletion. */
/**
* Starts a dialog activity to handle eSIM deletion.
* @param context {@code Context}
* @param subId The id of subscription need to be deleted.
*/
public static void startDeleteEuiccSubscriptionDialogActivity(Context context, int subId) {
if (!SubscriptionManager.isUsableSubscriptionId(subId)) {
Log.i(TAG, "Unable to delete subscription due to invalid subscription ID.");
return;
}
context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
}

View File

@@ -78,8 +78,8 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl
mSwitchBar.getSwitch().setOnBeforeCheckedChangeListener((toggleSwitch, isChecked) -> {
// TODO b/135222940: re-evaluate whether to use
// mSubscriptionManager#isSubscriptionEnabled
if (mSubscriptionManager.isActiveSubscriptionId(mSubId) != isChecked
&& (!mSubscriptionManager.setSubscriptionEnabled(mSubId, isChecked))) {
if (mSubscriptionManager.isActiveSubscriptionId(mSubId) != isChecked) {
SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, mSubId, isChecked);
return true;
}
return false;

View File

@@ -27,6 +27,7 @@ import android.telephony.UiccSlotInfo;
import android.text.TextUtils;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.SidecarFragment;
import com.android.settings.network.EnableMultiSimSidecar;
@@ -45,7 +46,8 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc
private static final String TAG = "ToggleSubscriptionDialogActivity";
// Arguments
private static final String ARG_enable = "enable";
@VisibleForTesting
public static final String ARG_enable = "enable";
// Dialog tags
private static final int DIALOG_TAG_DISABLE_SIM_CONFIRMATION = 1;
private static final int DIALOG_TAG_ENABLE_SIM_CONFIRMATION = 2;