Merge "Avoid IMEI overrided by getSummary() for dual SIM condition" into qt-dev
diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java
index 33d7a8a..8d1aafc 100644
--- a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java
+++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java
@@ -126,13 +126,7 @@
}
private SubscriptionInfo getSubscriptionInfo(Context context, int slotId) {
- final List<SubscriptionInfo> subscriptionInfoList = SubscriptionManager.from(context)
- .getActiveSubscriptionInfoList(true);
- if (subscriptionInfoList == null || subscriptionInfoList.isEmpty()) {
- return null;
- }
-
- return subscriptionInfoList.get(slotId);
+ return SubscriptionManager.from(context).getActiveSubscriptionInfoForSimSlotIndex(slotId);
}
@VisibleForTesting
diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
index 68c9588..3459b5c 100644
--- a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
@@ -20,6 +20,8 @@
import android.content.Context;
import android.os.UserManager;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import androidx.annotation.VisibleForTesting;
@@ -77,10 +79,26 @@
}
@Override
+ public void updateState(Preference preference) {
+ if (preference == null) {
+ return;
+ }
+ int size = mPreferenceList.size();
+ for (int i = 0; i < size; i++) {
+ Preference pref = mPreferenceList.get(i);
+ updatePreference(pref, i);
+ }
+ }
+
+ @Override
public CharSequence getSummary() {
- final int phoneType = mTelephonyManager.getPhoneType();
- return phoneType == PHONE_TYPE_CDMA ? mTelephonyManager.getMeid()
- : mTelephonyManager.getImei();
+ return getSummary(0);
+ }
+
+ private CharSequence getSummary(int simSlot) {
+ final int phoneType = getPhoneType(simSlot);
+ return phoneType == PHONE_TYPE_CDMA ? mTelephonyManager.getMeid(simSlot)
+ : mTelephonyManager.getImei(simSlot);
}
@Override
@@ -117,19 +135,12 @@
@Override
public void copy() {
- Sliceable.setCopyContent(mContext, getSummary(), mContext.getText(R.string.status_imei));
+ Sliceable.setCopyContent(mContext, getSummary(0), getTitle(0));
}
private void updatePreference(Preference preference, int simSlot) {
- final int phoneType = mTelephonyManager.getPhoneType();
- if (phoneType == PHONE_TYPE_CDMA) {
- preference.setTitle(getTitleForCdmaPhone(simSlot));
- preference.setSummary(getMeid(simSlot));
- } else {
- // GSM phone
- preference.setTitle(getTitleForGsmPhone(simSlot));
- preference.setSummary(mTelephonyManager.getImei(simSlot));
- }
+ preference.setTitle(getTitle(simSlot));
+ preference.setSummary(getSummary(simSlot));
}
private CharSequence getTitleForGsmPhone(int simSlot) {
@@ -142,9 +153,17 @@
: mContext.getString(R.string.status_meid_number);
}
- @VisibleForTesting
- String getMeid(int simSlot) {
- return mTelephonyManager.getMeid(simSlot);
+ private CharSequence getTitle(int simSlot) {
+ final int phoneType = getPhoneType(simSlot);
+ return phoneType == PHONE_TYPE_CDMA ? getTitleForCdmaPhone(simSlot)
+ : getTitleForGsmPhone(simSlot);
+ }
+
+ private int getPhoneType(int slotIndex) {
+ SubscriptionInfo subInfo = SubscriptionManager.from(mContext)
+ .getActiveSubscriptionInfoForSimSlotIndex(slotIndex);
+ return mTelephonyManager.getCurrentPhoneType(subInfo != null ? subInfo.getSubscriptionId()
+ : SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
}
@VisibleForTesting
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java
index 69bc494..997c35e 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java
@@ -93,7 +93,7 @@
public void displayPreference_multiSimGsm_shouldAddSecondPreference() {
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
- when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_GSM);
+ when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_GSM);
mController.displayPreference(mScreen);
@@ -104,8 +104,8 @@
public void displayPreference_singleSimCdmaPhone_shouldSetSingleSimCdmaTitleAndMeid() {
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
final String meid = "125132215123";
- when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA);
- doReturn(meid).when(mController).getMeid(anyInt());
+ when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_CDMA);
+ when(mTelephonyManager.getMeid(anyInt())).thenReturn(meid);
mController.displayPreference(mScreen);
@@ -118,8 +118,8 @@
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
final String meid = "125132215123";
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
- when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA);
- doReturn(meid).when(mController).getMeid(anyInt());
+ when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_CDMA);
+ when(mTelephonyManager.getMeid(anyInt())).thenReturn(meid);
mController.displayPreference(mScreen);
@@ -134,7 +134,7 @@
public void displayPreference_singleSimGsmPhone_shouldSetSingleSimGsmTitleAndImei() {
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
final String imei = "125132215123";
- when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_GSM);
+ when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_GSM);
when(mTelephonyManager.getImei(anyInt())).thenReturn(imei);
mController.displayPreference(mScreen);
@@ -148,7 +148,7 @@
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
final String imei = "125132215123";
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
- when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_GSM);
+ when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_GSM);
when(mTelephonyManager.getImei(anyInt())).thenReturn(imei);
mController.displayPreference(mScreen);
@@ -176,8 +176,8 @@
public void copy_shouldCopyImeiToClipboard() {
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
final String meid = "125132215123";
- when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA);
- when(mTelephonyManager.getMeid()).thenReturn(meid);
+ when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_CDMA);
+ when(mTelephonyManager.getMeid(anyInt())).thenReturn(meid);
mController.copy();