Avoid IMEI overrided by getSummary() for dual SIM condition
IMEI information will be overrided by getSummary() and cause second slot IMEI is oerrided by first slot. Avoid IMEI is override by first slot information. Bug: 131124169 Test: Test with dual SIM device and atest ImeiInfoPreferenceControllerTest, ImeiInfoDialogControllerTest pass Change-Id: Ia0a028aa0103867f42fff610129cf7ce2d3910b7
This commit is contained in:
@@ -126,13 +126,7 @@ public class ImeiInfoDialogController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private SubscriptionInfo getSubscriptionInfo(Context context, int slotId) {
|
private SubscriptionInfo getSubscriptionInfo(Context context, int slotId) {
|
||||||
final List<SubscriptionInfo> subscriptionInfoList = SubscriptionManager.from(context)
|
return SubscriptionManager.from(context).getActiveSubscriptionInfoForSimSlotIndex(slotId);
|
||||||
.getActiveSubscriptionInfoList(true);
|
|
||||||
if (subscriptionInfoList == null || subscriptionInfoList.isEmpty()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return subscriptionInfoList.get(slotId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
@@ -20,6 +20,8 @@ import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
import android.telephony.SubscriptionInfo;
|
||||||
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
@@ -76,11 +78,27 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Override
|
||||||
public CharSequence getSummary() {
|
public CharSequence getSummary() {
|
||||||
final int phoneType = mTelephonyManager.getPhoneType();
|
return getSummary(0);
|
||||||
return phoneType == PHONE_TYPE_CDMA ? mTelephonyManager.getMeid()
|
}
|
||||||
: mTelephonyManager.getImei();
|
|
||||||
|
private CharSequence getSummary(int simSlot) {
|
||||||
|
final int phoneType = getPhoneType(simSlot);
|
||||||
|
return phoneType == PHONE_TYPE_CDMA ? mTelephonyManager.getMeid(simSlot)
|
||||||
|
: mTelephonyManager.getImei(simSlot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -117,19 +135,12 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void copy() {
|
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) {
|
private void updatePreference(Preference preference, int simSlot) {
|
||||||
final int phoneType = mTelephonyManager.getPhoneType();
|
preference.setTitle(getTitle(simSlot));
|
||||||
if (phoneType == PHONE_TYPE_CDMA) {
|
preference.setSummary(getSummary(simSlot));
|
||||||
preference.setTitle(getTitleForCdmaPhone(simSlot));
|
|
||||||
preference.setSummary(getMeid(simSlot));
|
|
||||||
} else {
|
|
||||||
// GSM phone
|
|
||||||
preference.setTitle(getTitleForGsmPhone(simSlot));
|
|
||||||
preference.setSummary(mTelephonyManager.getImei(simSlot));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private CharSequence getTitleForGsmPhone(int simSlot) {
|
private CharSequence getTitleForGsmPhone(int simSlot) {
|
||||||
@@ -142,9 +153,17 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
|
|||||||
: mContext.getString(R.string.status_meid_number);
|
: mContext.getString(R.string.status_meid_number);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
private CharSequence getTitle(int simSlot) {
|
||||||
String getMeid(int simSlot) {
|
final int phoneType = getPhoneType(simSlot);
|
||||||
return mTelephonyManager.getMeid(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
|
@VisibleForTesting
|
||||||
|
@@ -93,7 +93,7 @@ public class ImeiInfoPreferenceControllerTest {
|
|||||||
public void displayPreference_multiSimGsm_shouldAddSecondPreference() {
|
public void displayPreference_multiSimGsm_shouldAddSecondPreference() {
|
||||||
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
|
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
|
||||||
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
|
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
|
||||||
when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_GSM);
|
when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_GSM);
|
||||||
|
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
|
|
||||||
@@ -104,8 +104,8 @@ public class ImeiInfoPreferenceControllerTest {
|
|||||||
public void displayPreference_singleSimCdmaPhone_shouldSetSingleSimCdmaTitleAndMeid() {
|
public void displayPreference_singleSimCdmaPhone_shouldSetSingleSimCdmaTitleAndMeid() {
|
||||||
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
|
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
|
||||||
final String meid = "125132215123";
|
final String meid = "125132215123";
|
||||||
when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA);
|
when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_CDMA);
|
||||||
doReturn(meid).when(mController).getMeid(anyInt());
|
when(mTelephonyManager.getMeid(anyInt())).thenReturn(meid);
|
||||||
|
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
|
|
||||||
@@ -118,8 +118,8 @@ public class ImeiInfoPreferenceControllerTest {
|
|||||||
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
|
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
|
||||||
final String meid = "125132215123";
|
final String meid = "125132215123";
|
||||||
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
|
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
|
||||||
when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA);
|
when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_CDMA);
|
||||||
doReturn(meid).when(mController).getMeid(anyInt());
|
when(mTelephonyManager.getMeid(anyInt())).thenReturn(meid);
|
||||||
|
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ public class ImeiInfoPreferenceControllerTest {
|
|||||||
public void displayPreference_singleSimGsmPhone_shouldSetSingleSimGsmTitleAndImei() {
|
public void displayPreference_singleSimGsmPhone_shouldSetSingleSimGsmTitleAndImei() {
|
||||||
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
|
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
|
||||||
final String imei = "125132215123";
|
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);
|
when(mTelephonyManager.getImei(anyInt())).thenReturn(imei);
|
||||||
|
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
@@ -148,7 +148,7 @@ public class ImeiInfoPreferenceControllerTest {
|
|||||||
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
|
ReflectionHelpers.setField(mController, "mIsMultiSim", true);
|
||||||
final String imei = "125132215123";
|
final String imei = "125132215123";
|
||||||
when(mTelephonyManager.getPhoneCount()).thenReturn(2);
|
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);
|
when(mTelephonyManager.getImei(anyInt())).thenReturn(imei);
|
||||||
|
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
@@ -176,8 +176,8 @@ public class ImeiInfoPreferenceControllerTest {
|
|||||||
public void copy_shouldCopyImeiToClipboard() {
|
public void copy_shouldCopyImeiToClipboard() {
|
||||||
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
|
ReflectionHelpers.setField(mController, "mIsMultiSim", false);
|
||||||
final String meid = "125132215123";
|
final String meid = "125132215123";
|
||||||
when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA);
|
when(mTelephonyManager.getCurrentPhoneType(anyInt())).thenReturn(PHONE_TYPE_CDMA);
|
||||||
when(mTelephonyManager.getMeid()).thenReturn(meid);
|
when(mTelephonyManager.getMeid(anyInt())).thenReturn(meid);
|
||||||
|
|
||||||
mController.copy();
|
mController.copy();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user