switch SIM refactor to support MEP
1. Using new telephony API and doing the code refactor 2. To support multi esim profiles case Bug: 199902896 Test: local build pass. Change-Id: I8580022793e5c3fc14159f14b406f864353477f8 Merged-In: I8580022793e5c3fc14159f14b406f864353477f8
This commit is contained in:
committed by
SongFerng Wang
parent
562cc5ed45
commit
37358798bc
@@ -38,8 +38,8 @@ public class SwitchToRemovableSlotSidecar extends EuiccOperationSidecar
|
||||
|
||||
// Stateless members.
|
||||
private SwitchToEuiccSubscriptionSidecar mSwitchToSubscriptionSidecar;
|
||||
private SwitchSlotSidecar mSwitchSlotSidecar;
|
||||
private int mPhysicalSlotId;
|
||||
private SubscriptionInfo mRemovedSubInfo;
|
||||
|
||||
/** Returns a SwitchToRemovableSlotSidecar sidecar instance. */
|
||||
public static SwitchToRemovableSlotSidecar get(FragmentManager fm) {
|
||||
@@ -51,20 +51,17 @@ public class SwitchToRemovableSlotSidecar extends EuiccOperationSidecar
|
||||
super.onCreate(savedInstanceState);
|
||||
mSwitchToSubscriptionSidecar =
|
||||
SwitchToEuiccSubscriptionSidecar.get(getChildFragmentManager());
|
||||
mSwitchSlotSidecar = SwitchSlotSidecar.get(getChildFragmentManager());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
mSwitchToSubscriptionSidecar.addListener(this);
|
||||
mSwitchSlotSidecar.addListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
mSwitchToSubscriptionSidecar.removeListener(this);
|
||||
mSwitchSlotSidecar.removeListener(this);
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
@@ -90,29 +87,46 @@ public class SwitchToRemovableSlotSidecar extends EuiccOperationSidecar
|
||||
*
|
||||
* @param physicalSlotId removable physical SIM slot ID.
|
||||
*/
|
||||
// ToDo: delete this api and refactor the related code.
|
||||
public void run(int physicalSlotId) {
|
||||
mPhysicalSlotId = physicalSlotId;
|
||||
SubscriptionManager subscriptionManager =
|
||||
getContext().getSystemService(SubscriptionManager.class);
|
||||
if (SubscriptionUtil.getActiveSubscriptions(subscriptionManager).stream()
|
||||
.anyMatch(SubscriptionInfo::isEmbedded)) {
|
||||
// In SS mode, the esim is active, then inactivate the esim.
|
||||
Log.i(TAG, "There is an active eSIM profile. Disable the profile first.");
|
||||
// Use INVALID_SUBSCRIPTION_ID to disable the only active profile.
|
||||
mSwitchToSubscriptionSidecar.run(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||
mSwitchToSubscriptionSidecar.run(SubscriptionManager.INVALID_SUBSCRIPTION_ID, 0, null);
|
||||
} else {
|
||||
Log.i(TAG, "There is no active eSIM profiles. Start to switch to removable slot.");
|
||||
mSwitchSlotSidecar.runSwitchToRemovableSlot(mPhysicalSlotId);
|
||||
mSwitchSlotSidecar.runSwitchToRemovableSlot(mPhysicalSlotId, null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts switching to the removable slot.
|
||||
*
|
||||
* @param physicalSlotId removable physical SIM slot ID.
|
||||
* @param removedSubInfo if the all of slots have sims, it should remove the one of active sim.
|
||||
* If the removedSubInfo is null, then use the default value.
|
||||
* The default value is the removable physical SIM slot and portId 0.
|
||||
*/
|
||||
public void run(int physicalSlotId, SubscriptionInfo removedSubInfo) {
|
||||
mPhysicalSlotId = physicalSlotId;
|
||||
mRemovedSubInfo = removedSubInfo;
|
||||
|
||||
Log.i(TAG, "Start to switch to removable slot.");
|
||||
mSwitchSlotSidecar.runSwitchToRemovableSlot(mPhysicalSlotId, mRemovedSubInfo);
|
||||
}
|
||||
|
||||
private void onSwitchToSubscriptionSidecarStateChange() {
|
||||
switch (mSwitchToSubscriptionSidecar.getState()) {
|
||||
case State.SUCCESS:
|
||||
mSwitchToSubscriptionSidecar.reset();
|
||||
Log.i(
|
||||
TAG,
|
||||
Log.i(TAG,
|
||||
"Successfully disabled eSIM profile. Start to switch to Removable slot.");
|
||||
mSwitchSlotSidecar.runSwitchToRemovableSlot(mPhysicalSlotId);
|
||||
mSwitchSlotSidecar.runSwitchToRemovableSlot(mPhysicalSlotId, mRemovedSubInfo);
|
||||
break;
|
||||
case State.ERROR:
|
||||
mSwitchToSubscriptionSidecar.reset();
|
||||
|
Reference in New Issue
Block a user