diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java index 5c3772bac8d..9ab21de3816 100644 --- a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java +++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java @@ -119,7 +119,8 @@ public class ImeiInfoDialogController { mDialog.setText(ID_PRL_VERSION_VALUE, getCdmaPrlVersion()); - if (mSubscriptionInfo != null && isCdmaLteEnabled()) { + if ((mSubscriptionInfo != null && isCdmaLteEnabled()) || + (mSubscriptionInfo == null && isSimPresent(mSlotId))) { // Show IMEI for LTE device mDialog.setText(ID_IMEI_VALUE, getTextAsDigits(mTelephonyManager.getImei(mSlotId))); @@ -151,6 +152,15 @@ public class ImeiInfoDialogController { == PhoneConstants.LTE_ON_CDMA_TRUE; } + boolean isSimPresent(int slotId) { + final int simState = mTelephonyManager.getSimState(slotId); + if ((simState != TelephonyManager.SIM_STATE_ABSENT) && + (simState != TelephonyManager.SIM_STATE_UNKNOWN)) { + return true; + } + return false; + } + @VisibleForTesting String getMeid() { return mTelephonyManager.getMeid(mSlotId); diff --git a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java index 7ad8d631edf..2fb2a3d6c55 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java @@ -142,6 +142,37 @@ public class ImeiInfoDialogControllerTest { verify(mDialog).removeViewFromScreen(ID_GSM_SETTINGS); } + + @Test + public void populateImeiInfo_cdmaSimPresent_shouldSetImeiInfoAndSetAllCdmaSetting() { + ReflectionHelpers.setField(mController, "mSubscriptionInfo", null); + when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA); + when(mTelephonyManager.getSimState(anyInt())).thenReturn( + TelephonyManager.SIM_STATE_PRESENT); + + mController.populateImeiInfo(); + + verify(mDialog).setText(ID_MEID_NUMBER_VALUE, MEID_NUMBER); + verify(mDialog).setText(ID_MIN_NUMBER_VALUE, ""); + verify(mDialog).setText(ID_PRL_VERSION_VALUE, ""); + verify(mDialog).setText(eq(ID_IMEI_VALUE), any()); + verify(mDialog).setText(eq(ID_IMEI_SV_VALUE), any()); + } + + @Test + public void populateImeiInfo_cdmaSimABSENT_shouldSetImeiInfoAndSetAllCdmaSetting() { + ReflectionHelpers.setField(mController, "mSubscriptionInfo", null); + when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA); + when(mTelephonyManager.getSimState(anyInt())).thenReturn(TelephonyManager.SIM_STATE_ABSENT); + + mController.populateImeiInfo(); + + verify(mDialog).setText(ID_MEID_NUMBER_VALUE, MEID_NUMBER); + verify(mDialog).setText(ID_MIN_NUMBER_VALUE, ""); + verify(mDialog).setText(ID_PRL_VERSION_VALUE, ""); + verify(mDialog).removeViewFromScreen(ID_GSM_SETTINGS); + } + @Test public void populateImeiInfo_gsmSimDisabled_shouldSetImeiAndRemoveCdmaSettings() { ReflectionHelpers.setField(mController, "mSubscriptionInfo", null);