diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 8d6e55c359a..e150d75a7ed 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -60,6 +60,8 @@ import android.provider.ContactsContract.Data; import android.provider.ContactsContract.Profile; import android.provider.ContactsContract.RawContacts; import android.service.persistentdata.PersistentDataBlockManager; +import android.telephony.SubInfoRecord; +import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; @@ -981,4 +983,42 @@ public final class Utils { } return sb.toString(); } + + /** + * finds a record with subId. + * Since the number of SIMs are few, an array is fine. + */ + public static SubInfoRecord findRecordBySubId(final int subId) { + final List subInfoList = SubscriptionManager.getActiveSubInfoList(); + final int subInfoLength = subInfoList.size(); + + for (int i = 0; i < subInfoLength; ++i) { + final SubInfoRecord sir = subInfoList.get(i); + if (sir != null && sir.getSubscriptionId() == subId) { + return sir; + } + } + + return null; + } + + /** + * finds a record with slotId. + * Since the number of SIMs are few, an array is fine. + */ + public static SubInfoRecord findRecordBySlotId(final int slotId) { + final List subInfoList = SubscriptionManager.getActiveSubInfoList(); + final int subInfoLength = subInfoList.size(); + + for (int i = 0; i < subInfoLength; ++i) { + final SubInfoRecord sir = subInfoList.get(i); + if (sir.getSimSlotIndex() == slotId) { + //Right now we take the first subscription on a SIM. + return sir; + } + } + + return null; + } + } diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java index 412214e2630..6b1298502ef 100644 --- a/src/com/android/settings/sim/SimSettings.java +++ b/src/com/android/settings/sim/SimSettings.java @@ -145,7 +145,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable mSelectableSubInfos = new ArrayList(); mNumSims = 0; for (int i = 0; i < numSlots; ++i) { - final SubInfoRecord sir = findRecordBySlotId(i); + final SubInfoRecord sir = Utils.findRecordBySlotId(i); mSimCards.addPreference(new SimPreference(getActivity(), sir, i)); mAvailableSubInfos.add(sir); if (sir != null) { @@ -165,7 +165,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable mNumSims = 0; mAvailableSubInfos = new ArrayList(numSlots); for (int i = 0; i < numSlots; ++i) { - final SubInfoRecord sir = findRecordBySlotId(i); + final SubInfoRecord sir = Utils.findRecordBySlotId(i); mAvailableSubInfos.add(sir); if (sir != null) { mNumSims++; @@ -196,46 +196,9 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable updateSmsValues(); } - /** - * finds a record with subId. - * Since the number of SIMs are few, an array is fine. - */ - private SubInfoRecord findRecordBySubId(final int subId) { - final int availableSubInfoLength = mAvailableSubInfos.size(); - - for (int i = 0; i < availableSubInfoLength; ++i) { - final SubInfoRecord sir = mAvailableSubInfos.get(i); - if (sir != null && sir.getSubscriptionId() == subId) { - return sir; - } - } - - return null; - } - - /** - * finds a record with slotId. - * Since the number of SIMs are few, an array is fine. - */ - private SubInfoRecord findRecordBySlotId(final int slotId) { - if (mSubInfoList != null){ - final int availableSubInfoLength = mSubInfoList.size(); - - for (int i = 0; i < availableSubInfoLength; ++i) { - final SubInfoRecord sir = mSubInfoList.get(i); - if (sir.getSimSlotIndex() == slotId) { - //Right now we take the first subscription on a SIM. - return sir; - } - } - } - - return null; - } - private void updateSmsValues() { final Preference simPref = (Preference) findPreference(KEY_SMS); - final SubInfoRecord sir = findRecordBySubId(SubscriptionManager.getDefaultSmsSubId()); + final SubInfoRecord sir = Utils.findRecordBySubId(SubscriptionManager.getDefaultSmsSubId()); simPref.setTitle(R.string.sms_messages_title); if (mSubInfoList.size() == 1) { simPref.setSummary(mSubInfoList.get(0).getDisplayName()); @@ -249,7 +212,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable private void updateCellularDataValues() { final Preference simPref = findPreference(KEY_CELLULAR_DATA); - final SubInfoRecord sir = findRecordBySubId(SubscriptionManager.getDefaultDataSubId()); + final SubInfoRecord sir = Utils.findRecordBySubId(SubscriptionManager.getDefaultDataSubId()); simPref.setTitle(R.string.cellular_data_title); if (mSubInfoList.size() == 1) { simPref.setSummary(mSubInfoList.get(0).getDisplayName()); @@ -535,14 +498,14 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable mSubInfoRecord.setDisplayName(displayName); SubscriptionManager.setDisplayName(displayName, subId, SubscriptionManager.NAME_SOURCE_USER_INPUT); - findRecordBySubId(subId).setDisplayName(displayName); + Utils.findRecordBySubId(subId).setDisplayName(displayName); final int colorSelected = colorSpinner.getSelectedItemPosition(); int subscriptionId = mSubInfoRecord.getSubscriptionId(); int color = colorArr[colorSelected]; mSubInfoRecord.setColor(color); SubscriptionManager.setColor(color, subscriptionId); - findRecordBySubId(subscriptionId).setColor(color); + Utils.findRecordBySubId(subscriptionId).setColor(color); updateAllOptions(); update();