Loading src/com/android/settings/network/SimOnboardingActivity.kt +21 −24 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import com.android.settings.R import com.android.settings.SidecarFragment import com.android.settings.network.telephony.SimRepository import com.android.settings.network.telephony.SubscriptionActionDialogActivity import com.android.settings.network.telephony.SubscriptionRepository import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity import com.android.settings.network.telephony.requireSubscriptionManager import com.android.settings.spa.SpaActivity.Companion.startSpaActivity Loading @@ -79,8 +80,10 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.conflate import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlinx.coroutines.withTimeoutOrNull class SimOnboardingActivity : SpaBaseDialogActivity() { lateinit var scope: CoroutineScope Loading Loading @@ -490,31 +493,25 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { } } suspend fun checkSimIsReadyAndGoNext() { private suspend fun checkSimIsReadyAndGoNext() { withContext(Dispatchers.Default) { val isEnabled = context.requireSubscriptionManager() .isSubscriptionEnabled(onboardingService.targetSubId) if (!isEnabled) { val latch = CountDownLatch(1) val receiver = CarrierConfigChangedReceiver(latch) try { val waitingTimeMillis = Settings.Global.getLong( context.contentResolver, Settings.Global.EUICC_SWITCH_SLOT_TIMEOUT_MILLIS, UiccSlotUtil.DEFAULT_WAIT_AFTER_SWITCH_TIMEOUT_MILLIS UiccSlotUtil.DEFAULT_WAIT_AFTER_SWITCH_TIMEOUT_MILLIS, ) receiver.registerOn(context) Log.d(TAG, "Start waiting, waitingTime is $waitingTimeMillis") latch.await(waitingTimeMillis, TimeUnit.MILLISECONDS) } catch (e: InterruptedException) { Thread.currentThread().interrupt() Log.e(TAG, "Failed switching to physical slot.", e) } finally { context.unregisterReceiver(receiver) } } Log.d(TAG, "Sim is ready then go to next") val isTimeout = withTimeoutOrNull(waitingTimeMillis) { SubscriptionRepository(context) .isSubscriptionEnabledFlow(onboardingService.targetSubId) .firstOrNull { it } } == null Log.d( TAG, if (isTimeout) "Sim is not ready after timeout" else "Sim is ready then go to next", ) callbackListener(CallbackType.CALLBACK_SETUP_NAME) } } Loading Loading
src/com/android/settings/network/SimOnboardingActivity.kt +21 −24 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import com.android.settings.R import com.android.settings.SidecarFragment import com.android.settings.network.telephony.SimRepository import com.android.settings.network.telephony.SubscriptionActionDialogActivity import com.android.settings.network.telephony.SubscriptionRepository import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity import com.android.settings.network.telephony.requireSubscriptionManager import com.android.settings.spa.SpaActivity.Companion.startSpaActivity Loading @@ -79,8 +80,10 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.conflate import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlinx.coroutines.withTimeoutOrNull class SimOnboardingActivity : SpaBaseDialogActivity() { lateinit var scope: CoroutineScope Loading Loading @@ -490,31 +493,25 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { } } suspend fun checkSimIsReadyAndGoNext() { private suspend fun checkSimIsReadyAndGoNext() { withContext(Dispatchers.Default) { val isEnabled = context.requireSubscriptionManager() .isSubscriptionEnabled(onboardingService.targetSubId) if (!isEnabled) { val latch = CountDownLatch(1) val receiver = CarrierConfigChangedReceiver(latch) try { val waitingTimeMillis = Settings.Global.getLong( context.contentResolver, Settings.Global.EUICC_SWITCH_SLOT_TIMEOUT_MILLIS, UiccSlotUtil.DEFAULT_WAIT_AFTER_SWITCH_TIMEOUT_MILLIS UiccSlotUtil.DEFAULT_WAIT_AFTER_SWITCH_TIMEOUT_MILLIS, ) receiver.registerOn(context) Log.d(TAG, "Start waiting, waitingTime is $waitingTimeMillis") latch.await(waitingTimeMillis, TimeUnit.MILLISECONDS) } catch (e: InterruptedException) { Thread.currentThread().interrupt() Log.e(TAG, "Failed switching to physical slot.", e) } finally { context.unregisterReceiver(receiver) } } Log.d(TAG, "Sim is ready then go to next") val isTimeout = withTimeoutOrNull(waitingTimeMillis) { SubscriptionRepository(context) .isSubscriptionEnabledFlow(onboardingService.targetSubId) .firstOrNull { it } } == null Log.d( TAG, if (isTimeout) "Sim is not ready after timeout" else "Sim is ready then go to next", ) callbackListener(CallbackType.CALLBACK_SETUP_NAME) } } Loading