Correct the way settings deals with subscriptions.
Change-Id: I19e9dfaf248fce7376b124ee91de7e73fdc99fb3
This commit is contained in:
@@ -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
|
||||||
|
@@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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()));
|
||||||
|
@@ -1025,49 +1025,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
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
||||||
|
@@ -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();
|
||||||
|
Reference in New Issue
Block a user