Check if ECBMode when activate SIM card

If in ECBMode, start ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS to show a
dialog instead.

This align with the deactivate sim case

Bug: 393298086
Test: atest SubscriptionActivationRepositoryTest
Test: adb shell cmd phone emergency-callback-mode
Flag: EXEMPT bugfix
Change-Id: Id40d087b7d2d3ca99504ec75bac1c5e29c67258d
This commit is contained in:
songferngwang
2025-02-13 12:04:07 +00:00
parent 2d5a231a46
commit 538fb34027
2 changed files with 29 additions and 1 deletions

View File

@@ -52,7 +52,7 @@ class SubscriptionActivationRepository(
Log.i(TAG, "Unable to toggle subscription due to unusable subscription ID.")
return
}
if (!active && isEmergencyCallbackMode(subId)) {
if (isEmergencyCallbackMode(subId)) {
val intent = Intent(ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS).apply {
setPackage(Utils.PHONE_PACKAGE_NAME)
}

View File

@@ -17,12 +17,15 @@
package com.android.settings.network.telephony
import android.content.Context
import android.content.Intent
import android.os.UserHandle
import android.telephony.SubscriptionManager
import android.telephony.TelephonyManager
import android.telephony.TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.network.SatelliteRepository
import com.android.settings.network.SimOnboardingActivity
import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.flow.flowOf
@@ -33,6 +36,7 @@ import org.mockito.kotlin.any
import org.mockito.kotlin.argThat
import org.mockito.kotlin.doNothing
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.never
import org.mockito.kotlin.spy
@@ -107,6 +111,17 @@ class SubscriptionActivationRepositoryTest {
verify(context, never()).startActivity(any())
}
@Test
fun setActive_turnOnAndIsEmergencyCallbackMode() = runBlocking {
mockTelephonyManager.stub {
on { emergencyCallbackMode } doReturn true
}
repository.setActive(subId = SUB_ID, active = true)
verify(context).startActivity(argThat { action == ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS })
}
@Test
fun setActive_turnOffAndIsEmergencyCallbackMode() = runBlocking {
mockTelephonyManager.stub {
@@ -131,6 +146,19 @@ class SubscriptionActivationRepositoryTest {
})
}
@Test
fun setActive_turnOnAndNotEmergencyCallbackMode() = runBlocking {
mockTelephonyManager.stub {
on { emergencyCallbackMode } doReturn false
}
repository.setActive(subId = SUB_ID, active = true)
verify(context).startActivityAsUser(argThat {
component?.className == SimOnboardingActivity::class.qualifiedName
}, eq(UserHandle.CURRENT))
}
private companion object {
const val SUB_ID = 1
}