[MEP] psim->esim, don't skip carrierConfigChanged with subId -1
After simSlotMapping from psim to esim, since the esim can not be enabled by the modem, the UI start to enable the esim. Therefore, when receiver receive the first carrier config changed, UI can exit waiting state, and then start to enable esim. Bug: 246556280 Test: Build pass. Verify by QA Change-Id: I4b8b2f3d1dd014fc1ddb92ebffa614d6daf9d142
This commit is contained in:
@@ -32,9 +32,20 @@ public class CarrierConfigChangedReceiver extends BroadcastReceiver {
|
||||
CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED;
|
||||
|
||||
private final CountDownLatch mLatch;
|
||||
private final boolean mIsWaitingForValidSubId;
|
||||
|
||||
public CarrierConfigChangedReceiver(CountDownLatch latch) {
|
||||
/**
|
||||
* This is the CarrierConfigChanged receiver. If it receives the carrier config changed, then it
|
||||
* call the CountDownLatch.countDown().
|
||||
* If the "isWaitingForValidSubId" is true, then the receiver skip the carrier config changed
|
||||
* with the subId = -1. The receiver executes the countDown when the CarrierConfigChanged
|
||||
* with valid subId.
|
||||
* If the "isWaitingForValidSubId" is false, then the receiver executes the countDown when
|
||||
* receiving any CarrierConfigChanged.
|
||||
*/
|
||||
public CarrierConfigChangedReceiver(CountDownLatch latch, boolean isWaitingForValidSubId) {
|
||||
mLatch = latch;
|
||||
mIsWaitingForValidSubId = isWaitingForValidSubId;
|
||||
}
|
||||
|
||||
public void registerOn(Context context) {
|
||||
@@ -53,7 +64,8 @@ public class CarrierConfigChangedReceiver extends BroadcastReceiver {
|
||||
}
|
||||
|
||||
private void checkSubscriptionIndex(Intent intent) {
|
||||
if (intent.hasExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX)) {
|
||||
if (intent.hasExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX)
|
||||
|| !mIsWaitingForValidSubId) {
|
||||
int subId = intent.getIntExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX, -1);
|
||||
Log.i(TAG, "subId from config changed: " + subId);
|
||||
mLatch.countDown();
|
||||
|
@@ -141,7 +141,8 @@ public class UiccSlotUtil {
|
||||
inactiveRemovableSlot,
|
||||
/*removable sim's port Id*/ TelephonyManager.DEFAULT_PORT_INDEX,
|
||||
excludedLogicalSlotIndex),
|
||||
context);
|
||||
context,
|
||||
/*isWaitingForValidSubId=*/ true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -179,7 +180,8 @@ public class UiccSlotUtil {
|
||||
performSwitchToSlot(telMgr,
|
||||
prepareUiccSlotMappings(uiccSlotMappings, /*slot is not psim*/ false,
|
||||
physicalSlotId, port, excludedLogicalSlotIndex),
|
||||
context);
|
||||
context,
|
||||
/*isWaitingForValidSubId=*/ false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -231,7 +233,8 @@ public class UiccSlotUtil {
|
||||
}
|
||||
|
||||
private static void performSwitchToSlot(TelephonyManager telMgr,
|
||||
Collection<UiccSlotMapping> uiccSlotMappings, Context context)
|
||||
Collection<UiccSlotMapping> uiccSlotMappings, Context context,
|
||||
boolean isWaitingForValidSubId)
|
||||
throws UiccSlotsException {
|
||||
CarrierConfigChangedReceiver receiver = null;
|
||||
long waitingTimeMillis =
|
||||
@@ -241,7 +244,7 @@ public class UiccSlotUtil {
|
||||
DEFAULT_WAIT_AFTER_SWITCH_TIMEOUT_MILLIS);
|
||||
try {
|
||||
CountDownLatch latch = new CountDownLatch(1);
|
||||
receiver = new CarrierConfigChangedReceiver(latch);
|
||||
receiver = new CarrierConfigChangedReceiver(latch, isWaitingForValidSubId);
|
||||
receiver.registerOn(context);
|
||||
telMgr.setSimSlotMapping(uiccSlotMappings);
|
||||
latch.await(waitingTimeMillis, TimeUnit.MILLISECONDS);
|
||||
|
Reference in New Issue
Block a user