Merge "Correct the way settings deals with subscriptions."

This commit is contained in:
Stuart Scott
2015-04-20 17:56:48 +00:00
committed by Android (Google) Code Review
8 changed files with 31 additions and 108 deletions

View File

@@ -146,7 +146,7 @@ public class ApnSettings extends SettingsPreferenceFragment implements
setHasOptionsMenu(true); setHasOptionsMenu(true);
} }
mSubscriptionInfo = Utils.findRecordBySubId(activity, subId); mSubscriptionInfo = SubscriptionManager.from(activity).getActiveSubscriptionInfo(subId);
} }
@Override @Override

View File

@@ -717,9 +717,9 @@ public class DataUsageSummary extends HighlightingFragment implements Indexable
int simCount = mTelephonyManager.getSimCount(); int simCount = mTelephonyManager.getSimCount();
for (int i = 0; i < simCount; i++) { List<SubscriptionInfo> sirs = mSubscriptionManager.getActiveSubscriptionInfoList();
final SubscriptionInfo sir = Utils.findRecordBySlotId(context, i); if (sirs != null) {
if (sir != null) { for (SubscriptionInfo sir : sirs) {
addMobileTab(context, sir, (simCount > 1)); addMobileTab(context, sir, (simCount > 1));
} }
} }
@@ -880,8 +880,8 @@ public class DataUsageSummary extends HighlightingFragment implements Indexable
if (mCurrentTab != null && mCurrentTab.length() > TAB_MOBILE.length() ){ if (mCurrentTab != null && mCurrentTab.length() > TAB_MOBILE.length() ){
final int slotId = Integer.parseInt(mCurrentTab.substring(TAB_MOBILE.length(), final int slotId = Integer.parseInt(mCurrentTab.substring(TAB_MOBILE.length(),
mCurrentTab.length())); mCurrentTab.length()));
final SubscriptionInfo sir = com.android.settings.Utils.findRecordBySlotId(context, final SubscriptionInfo sir = mSubscriptionManager
slotId); .getActiveSubscriptionInfoForSimSlotIndex(slotId);
if (sir != null) { if (sir != null) {
seriesColor = sir.getIconTint(); seriesColor = sir.getIconTint();
@@ -1245,8 +1245,7 @@ public class DataUsageSummary extends HighlightingFragment implements Indexable
return; return;
} }
final SubscriptionInfo nextSir = mSubscriptionManager.getActiveSubscriptionInfo( final SubscriptionInfo nextSir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
mSubscriptionManager.getDefaultDataSubId());
// If the device is single SIM or is enabling data on the active data SIM then forgo // If the device is single SIM or is enabling data on the active data SIM then forgo
// the pop-up. // the pop-up.
@@ -2784,22 +2783,7 @@ public class DataUsageSummary extends HighlightingFragment implements Indexable
return -1; return -1;
} }
//SUB SELECT private boolean isMobileDataAvailable(int subId) {
private boolean isMobileDataAvailable(long subId) { return mSubscriptionManager.getActiveSubscriptionInfo(subId) != null;
int[] subIds = SubscriptionManager.getSubId(PhoneConstants.SUB1);
if (subIds != null && subIds[0] == subId) {
return true;
}
subIds = SubscriptionManager.getSubId(PhoneConstants.SUB2);
if (subIds != null && subIds[0] == subId) {
return true;
}
subIds = SubscriptionManager.getSubId(PhoneConstants.SUB3);
if (subIds != null && subIds[0] == subId) {
return true;
}
return false;
} }
} }

View File

@@ -212,14 +212,15 @@ public class IccLockSettings extends InstrumentedPreferenceActivity
mTabHost.setOnTabChangedListener(mTabListener); mTabHost.setOnTabChangedListener(mTabListener);
mTabHost.clearAllTabs(); mTabHost.clearAllTabs();
SubscriptionManager sm = SubscriptionManager.from(this);
for (int i = 0; i < numSims; ++i) { for (int i = 0; i < numSims; ++i) {
final SubscriptionInfo subInfo = Utils.findRecordBySlotId(this, i); final SubscriptionInfo subInfo = sm.getActiveSubscriptionInfoForSimSlotIndex(i);
mTabHost.addTab(buildTabSpec(String.valueOf(i), mTabHost.addTab(buildTabSpec(String.valueOf(i),
String.valueOf(subInfo == null String.valueOf(subInfo == null
? context.getString(R.string.sim_editor_title, i + 1) ? context.getString(R.string.sim_editor_title, i + 1)
: subInfo.getDisplayName()))); : subInfo.getDisplayName())));
} }
final SubscriptionInfo sir = Utils.findRecordBySlotId(getBaseContext(), 0); final SubscriptionInfo sir = sm.getActiveSubscriptionInfoForSimSlotIndex(0);
mPhone = (sir == null) ? null mPhone = (sir == null) ? null
: PhoneFactory.getPhone(SubscriptionManager.getPhoneId(sir.getSubscriptionId())); : PhoneFactory.getPhone(SubscriptionManager.getPhoneId(sir.getSubscriptionId()));
@@ -476,7 +477,8 @@ public class IccLockSettings extends InstrumentedPreferenceActivity
@Override @Override
public void onTabChanged(String tabId) { public void onTabChanged(String tabId) {
final int slotId = Integer.parseInt(tabId); final int slotId = Integer.parseInt(tabId);
final SubscriptionInfo sir = Utils.findRecordBySlotId(getBaseContext(), slotId); final SubscriptionInfo sir = SubscriptionManager.from(getBaseContext())
.getActiveSubscriptionInfoForSimSlotIndex(slotId);
mPhone = (sir == null) ? null mPhone = (sir == null) ? null
: PhoneFactory.getPhone(SubscriptionManager.getPhoneId(sir.getSubscriptionId())); : PhoneFactory.getPhone(SubscriptionManager.getPhoneId(sir.getSubscriptionId()));

View File

@@ -1028,49 +1028,6 @@ public final class Utils {
return sb.toString(); return sb.toString();
} }
/**
* finds a record with subId.
* Since the number of SIMs are few, an array is fine.
*/
public static SubscriptionInfo findRecordBySubId(Context context, final int subId) {
final List<SubscriptionInfo> subInfoList =
SubscriptionManager.from(context).getActiveSubscriptionInfoList();
if (subInfoList != null) {
final int subInfoLength = subInfoList.size();
for (int i = 0; i < subInfoLength; ++i) {
final SubscriptionInfo 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 SubscriptionInfo findRecordBySlotId(Context context, final int slotId) {
final List<SubscriptionInfo> subInfoList =
SubscriptionManager.from(context).getActiveSubscriptionInfoList();
if (subInfoList != null) {
final int subInfoLength = subInfoList.size();
for (int i = 0; i < subInfoLength; ++i) {
final SubscriptionInfo sir = subInfoList.get(i);
if (sir.getSimSlotIndex() == slotId) {
//Right now we take the first subscription on a SIM.
return sir;
}
}
}
return null;
}
/** /**
* Queries for the UserInfo of a user. Returns null if the user doesn't exist (was removed). * Queries for the UserInfo of a user. Returns null if the user doesn't exist (was removed).
* @param userManager Instance of UserManager * @param userManager Instance of UserManager

View File

@@ -89,10 +89,8 @@ public class ImeiInformation extends InstrumentedPreferenceActivity {
removePreferenceFromScreen(KEY_ICC_ID); removePreferenceFromScreen(KEY_ICC_ID);
} }
} else { } else {
setSummaryText(KEY_IMEI, phone.getDeviceId()); setSummaryText(KEY_IMEI, phone.getImei());
setSummaryText(KEY_IMEI_SV, setSummaryText(KEY_IMEI_SV, phone.getDeviceSvn());
((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
.getDeviceSoftwareVersion(phoneId));
// device is not CDMA, do not display CDMA features // device is not CDMA, do not display CDMA features
// check Null in case no specified preference in overlay xml // check Null in case no specified preference in overlay xml
removePreferenceFromScreen(KEY_PRL_VERSION); removePreferenceFromScreen(KEY_PRL_VERSION);

View File

@@ -132,10 +132,10 @@ public class SimStatus extends InstrumentedPreferenceActivity {
@Override @Override
protected void onCreate(Bundle icicle) { protected void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
mSelectableSubInfos = new ArrayList<SubscriptionInfo>();
mTelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); mTelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
mSelectableSubInfos = SubscriptionManager.from(this).getActiveSubscriptionInfoList();
addPreferencesFromResource(R.xml.device_info_sim_status); addPreferencesFromResource(R.xml.device_info_sim_status);
mRes = getResources(); mRes = getResources();
@@ -143,13 +143,6 @@ public class SimStatus extends InstrumentedPreferenceActivity {
// Note - missing in zaku build, be careful later... // Note - missing in zaku build, be careful later...
mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH); mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH);
for (int i = 0; i < mTelephonyManager.getSimCount(); i++) {
final SubscriptionInfo sir = Utils.findRecordBySlotId(this, i);
if (sir != null) {
mSelectableSubInfos.add(sir);
}
}
mSir = mSelectableSubInfos.size() > 0 ? mSelectableSubInfos.get(0) : null; mSir = mSelectableSubInfos.size() > 0 ? mSelectableSubInfos.get(0) : null;
if (mSelectableSubInfos.size() > 1) { if (mSelectableSubInfos.size() > 1) {
setContentView(R.layout.sim_information); setContentView(R.layout.sim_information);
@@ -351,10 +344,8 @@ public class SimStatus extends InstrumentedPreferenceActivity {
} }
// If formattedNumber is null or empty, it'll display as "Unknown". // If formattedNumber is null or empty, it'll display as "Unknown".
setSummaryText(KEY_PHONE_NUMBER, formattedNumber); setSummaryText(KEY_PHONE_NUMBER, formattedNumber);
final String imei = mPhone.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA setSummaryText(KEY_IMEI, mPhone.getImei());
? mPhone.getImei() : mPhone.getDeviceId(); setSummaryText(KEY_IMEI_SV, mPhone.getDeviceSvn());
setSummaryText(KEY_IMEI, imei);
setSummaryText(KEY_IMEI_SV, mTelephonyManager.getDeviceSoftwareVersion(/*slotId*/));
if (!mShowLatestAreaInfo) { if (!mShowLatestAreaInfo) {
removePreferenceFromScreen(KEY_LATEST_AREA_INFO); removePreferenceFromScreen(KEY_LATEST_AREA_INFO);

View File

@@ -80,7 +80,8 @@ public class SimDialogActivity extends Activity {
private void displayPreferredDialog(final int slotId) { private void displayPreferredDialog(final int slotId) {
final Resources res = getResources(); final Resources res = getResources();
final Context context = getApplicationContext(); final Context context = getApplicationContext();
final SubscriptionInfo sir = Utils.findRecordBySlotId(context, slotId); final SubscriptionInfo sir = SubscriptionManager.from(context)
.getActiveSubscriptionInfoForSimSlotIndex(slotId);
if (sir != null) { if (sir != null) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
@@ -214,7 +215,8 @@ public class SimDialogActivity extends Activity {
list.add((String)phoneAccount.getLabel()); list.add((String)phoneAccount.getLabel());
int subId = telephonyManager.getSubIdForPhoneAccount(phoneAccount); int subId = telephonyManager.getSubIdForPhoneAccount(phoneAccount);
if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
final SubscriptionInfo sir = Utils.findRecordBySubId(context, subId); final SubscriptionInfo sir = SubscriptionManager.from(context)
.getActiveSubscriptionInfo(subId);
callsSubInfoList.add(sir); callsSubInfoList.add(sir);
} else { } else {
callsSubInfoList.add(null); callsSubInfoList.add(null);

View File

@@ -151,7 +151,10 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
mAvailableSubInfos = new ArrayList<SubscriptionInfo>(numSlots); mAvailableSubInfos = new ArrayList<SubscriptionInfo>(numSlots);
mSelectableSubInfos = new ArrayList<SubscriptionInfo>(); mSelectableSubInfos = new ArrayList<SubscriptionInfo>();
for (int i = 0; i < numSlots; ++i) { for (int i = 0; i < numSlots; ++i) {
final SubscriptionInfo sir = Utils.findRecordBySlotId(getActivity(), i); // Less efficient than getActiveSubscriptionInfoList but we need to show a disable
// preference if the slot is empty
final SubscriptionInfo sir = mSubscriptionManager
.getActiveSubscriptionInfoForSimSlotIndex(i);
SimPreference simPreference = new SimPreference(getActivity(), sir, i); SimPreference simPreference = new SimPreference(getActivity(), sir, i);
simPreference.setOrder(i-numSlots); simPreference.setOrder(i-numSlots);
mSimCards.addPreference(simPreference); mSimCards.addPreference(simPreference);
@@ -165,17 +168,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
} }
private void updateAvailableSubInfos(){ private void updateAvailableSubInfos(){
final TelephonyManager tm = mAvailableSubInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
(TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
final int numSlots = tm.getSimCount();
mAvailableSubInfos = new ArrayList<SubscriptionInfo>(numSlots);
for (int i = 0; i < numSlots; ++i) {
final SubscriptionInfo sir = Utils.findRecordBySlotId(getActivity(), i);
mAvailableSubInfos.add(sir);
if (sir != null) {
}
}
} }
private void updateAllOptions() { private void updateAllOptions() {
@@ -203,8 +196,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
private void updateSmsValues() { private void updateSmsValues() {
final Preference simPref = findPreference(KEY_SMS); final Preference simPref = findPreference(KEY_SMS);
final SubscriptionInfo sir = Utils.findRecordBySubId(getActivity(), final SubscriptionInfo sir = mSubscriptionManager.getDefaultSmsSubscriptionInfo();
mSubscriptionManager.getDefaultSmsSubId());
simPref.setTitle(R.string.sms_messages_title); simPref.setTitle(R.string.sms_messages_title);
if (DBG) log("[updateSmsValues] mSubInfoList=" + mSubInfoList); if (DBG) log("[updateSmsValues] mSubInfoList=" + mSubInfoList);
@@ -218,8 +210,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
private void updateCellularDataValues() { private void updateCellularDataValues() {
final Preference simPref = findPreference(KEY_CELLULAR_DATA); final Preference simPref = findPreference(KEY_CELLULAR_DATA);
final SubscriptionInfo sir = Utils.findRecordBySubId(getActivity(), final SubscriptionInfo sir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
mSubscriptionManager.getDefaultDataSubId());
simPref.setTitle(R.string.cellular_data_title); simPref.setTitle(R.string.cellular_data_title);
if (DBG) log("[updateCellularDataValues] mSubInfoList=" + mSubInfoList); if (DBG) log("[updateCellularDataValues] mSubInfoList=" + mSubInfoList);
@@ -396,14 +387,12 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
mSubInfoRecord.setDisplayName(displayName); mSubInfoRecord.setDisplayName(displayName);
mSubscriptionManager.setDisplayName(displayName, subId, mSubscriptionManager.setDisplayName(displayName, subId,
SubscriptionManager.NAME_SOURCE_USER_INPUT); SubscriptionManager.NAME_SOURCE_USER_INPUT);
Utils.findRecordBySubId(getActivity(), subId).setDisplayName(displayName);
final int tintSelected = tintSpinner.getSelectedItemPosition(); final int tintSelected = tintSpinner.getSelectedItemPosition();
int subscriptionId = mSubInfoRecord.getSubscriptionId(); int subscriptionId = mSubInfoRecord.getSubscriptionId();
int tint = mTintArr[tintSelected]; int tint = mTintArr[tintSelected];
mSubInfoRecord.setIconTint(tint); mSubInfoRecord.setIconTint(tint);
mSubscriptionManager.setIconTint(tint, subscriptionId); mSubscriptionManager.setIconTint(tint, subscriptionId);
Utils.findRecordBySubId(getActivity(), subscriptionId).setIconTint(tint);
updateAllOptions(); updateAllOptions();
update(); update();