Fix incorrect mapping to get subscriptioninfo
getActiveSubscriptionInfoList() returns a list of active subscription. It doesn't 1:1 mapping with slotId. So it is not correct to use slotId as index to get subscriptioninfo from list. Use framework interface getActiveSubscriptionInfoForSimSlotIndex() to get subscriptioninfo per slotid instead. Fixes: 129038597 Test: robotest Change-Id: If4277c425e6145e0e3ba716551d0dce46cdb61ab
This commit is contained in:
@@ -26,6 +26,7 @@ import android.text.SpannableStringBuilder;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextUtils;
|
||||
import android.text.style.TtsSpan;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
@@ -33,10 +34,10 @@ import androidx.annotation.VisibleForTesting;
|
||||
import com.android.internal.telephony.PhoneConstants;
|
||||
import com.android.settings.R;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ImeiInfoDialogController {
|
||||
|
||||
private static final String TAG = "ImeiInfoDialog";
|
||||
|
||||
@VisibleForTesting
|
||||
static final int ID_PRL_VERSION_VALUE = R.id.prl_version_value;
|
||||
private static final int ID_MIN_NUMBER_LABEL = R.id.min_number_label;
|
||||
@@ -75,15 +76,24 @@ public class ImeiInfoDialogController {
|
||||
mDialog = dialog;
|
||||
mSlotId = slotId;
|
||||
final Context context = dialog.getContext();
|
||||
mTelephonyManager = (TelephonyManager) context.getSystemService(
|
||||
Context.TELEPHONY_SERVICE);
|
||||
mSubscriptionInfo = getSubscriptionInfo(context, slotId);
|
||||
mSubscriptionInfo = context.getSystemService(SubscriptionManager.class)
|
||||
.getActiveSubscriptionInfoForSimSlotIndex(slotId);
|
||||
if (mSubscriptionInfo != null) {
|
||||
mTelephonyManager = context.getSystemService(TelephonyManager.class)
|
||||
.createForSubscriptionId(mSubscriptionInfo.getSubscriptionId());
|
||||
} else {
|
||||
mTelephonyManager = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets IMEI/MEID information based on whether the device is CDMA or GSM.
|
||||
*/
|
||||
public void populateImeiInfo() {
|
||||
if (mTelephonyManager == null) {
|
||||
Log.w(TAG, "TelephonyManager for this slot is null. Invalid slot? id=" + mSlotId);
|
||||
return;
|
||||
}
|
||||
if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
|
||||
updateDialogForCdmaPhone();
|
||||
} else {
|
||||
@@ -94,9 +104,9 @@ public class ImeiInfoDialogController {
|
||||
private void updateDialogForCdmaPhone() {
|
||||
final Resources res = mDialog.getContext().getResources();
|
||||
mDialog.setText(ID_MEID_NUMBER_VALUE, getMeid());
|
||||
mDialog.setText(ID_MIN_NUMBER_VALUE,
|
||||
mSubscriptionInfo != null ? mTelephonyManager.getCdmaMin(
|
||||
mSubscriptionInfo.getSubscriptionId()) : "");
|
||||
mDialog.setText(ID_MIN_NUMBER_VALUE, mSubscriptionInfo != null
|
||||
? mTelephonyManager.getCdmaMin(mSubscriptionInfo.getSubscriptionId())
|
||||
: "");
|
||||
|
||||
if (res.getBoolean(R.bool.config_msid_enable)) {
|
||||
mDialog.setText(ID_MIN_NUMBER_LABEL,
|
||||
@@ -125,10 +135,6 @@ public class ImeiInfoDialogController {
|
||||
mDialog.removeViewFromScreen(ID_CDMA_SETTINGS);
|
||||
}
|
||||
|
||||
private SubscriptionInfo getSubscriptionInfo(Context context, int slotId) {
|
||||
return SubscriptionManager.from(context).getActiveSubscriptionInfoForSimSlotIndex(slotId);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
String getCdmaPrlVersion() {
|
||||
return mTelephonyManager.getCdmaPrlVersion();
|
||||
|
Reference in New Issue
Block a user