diff options
Diffstat (limited to 'src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java')
-rw-r--r-- | src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java | 495 |
1 files changed, 399 insertions, 96 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java index c8226025..10cfa09d 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java @@ -17,7 +17,6 @@ package com.android.cellbroadcastreceiver; import android.content.Context; -import android.content.res.Resources; import android.os.Bundle; import android.os.UserManager; import android.preference.CheckBoxPreference; @@ -25,10 +24,20 @@ import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; -import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.provider.Settings; import android.telephony.TelephonyManager; +import android.telephony.SubscriptionManager; +import android.telephony.SubscriptionInfo; +import android.util.Log; +import android.view.View; +import android.widget.TabHost; +import android.widget.TabHost.OnTabChangeListener; +import android.widget.TabHost.TabContentFactory; +import android.widget.TabHost.TabSpec; +import android.widget.TabWidget; +import java.util.ArrayList; +import java.util.List; /** * Settings activity for the cell broadcast receiver. @@ -89,164 +98,458 @@ public class CellBroadcastSettings extends PreferenceActivity { // Alert reminder interval ("once" = single 2 minute reminder). public static final String KEY_ALERT_REMINDER_INTERVAL = "alert_reminder_interval"; + // Default reminder interval. + public static final String ALERT_REMINDER_INTERVAL = "0"; + + private final static String TAG = "CellBroadcastSettings"; + + private TelephonyManager mTelephonyManager; + private SubscriptionInfo mSir; + private TabHost mTabHost; + private TabWidget mTabWidget; + private List<SubscriptionInfo> mSelectableSubInfos; + + private CheckBoxPreference mExtremeCheckBox; + private CheckBoxPreference mSevereCheckBox; + private CheckBoxPreference mAmberCheckBox; + private CheckBoxPreference mEmergencyCheckBox; + private ListPreference mAlertDuration; + private ListPreference mReminderInterval; + private CheckBoxPreference mVibrateCheckBox; + private CheckBoxPreference mSpeechCheckBox; + private CheckBoxPreference mEtwsTestCheckBox; + private CheckBoxPreference mChannel50CheckBox; + private CheckBoxPreference mCmasCheckBox; + private CheckBoxPreference mOptOutCheckBox; + private PreferenceCategory mAlertCategory; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE); - if (userManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS)) { setContentView(R.layout.cell_broadcast_disallowed_preference_screen); return; } - // Display the fragment as the main content. - getFragmentManager().beginTransaction().replace(android.R.id.content, - new CellBroadcastSettingsFragment()).commit(); + mTelephonyManager = (TelephonyManager) getSystemService( + Context.TELEPHONY_SERVICE); + mSelectableSubInfos = new ArrayList<SubscriptionInfo>(); + for (int i = 0; i < mTelephonyManager.getSimCount(); i++) { + final SubscriptionInfo sir = + findRecordBySlotId(getApplicationContext(), i); + if (sir != null) { + mSelectableSubInfos.add(sir); + } + } + + addPreferencesFromResource(R.xml.preferences); + mSir = mSelectableSubInfos.size() > 0 ? mSelectableSubInfos.get(0) : null; + if (mSelectableSubInfos.size() > 1) { + setContentView(com.android.internal.R.layout.common_tab_settings); + + mTabHost = (TabHost) findViewById(android.R.id.tabhost); + mTabHost.setup(); + mTabHost.setOnTabChangedListener(mTabListener); + mTabHost.clearAllTabs(); + + for (int i = 0; i < mSelectableSubInfos.size(); i++) { + mTabHost.addTab(buildTabSpec(String.valueOf(i), + String.valueOf(mSelectableSubInfos.get(i).getDisplayName()))); + } + } + updatePreferences(); } - /** - * New fragment-style implementation of preferences. - */ - public static class CellBroadcastSettingsFragment extends PreferenceFragment { + private void updatePreferences() { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + PreferenceScreen prefScreen = getPreferenceScreen(); + if (prefScreen != null) { + prefScreen.removeAll(); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); - PreferenceScreen preferenceScreen = getPreferenceScreen(); + mExtremeCheckBox = (CheckBoxPreference) + findPreference(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS); + mSevereCheckBox = (CheckBoxPreference) + findPreference(KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS); + mAmberCheckBox = (CheckBoxPreference) + findPreference(KEY_ENABLE_CMAS_AMBER_ALERTS); + mEmergencyCheckBox = (CheckBoxPreference) + findPreference(KEY_ENABLE_EMERGENCY_ALERTS); + mAlertDuration = (ListPreference) + findPreference(KEY_ALERT_SOUND_DURATION); + mReminderInterval = (ListPreference) + findPreference(KEY_ALERT_REMINDER_INTERVAL); + mVibrateCheckBox = (CheckBoxPreference) + findPreference(KEY_ENABLE_ALERT_VIBRATE); + mSpeechCheckBox = (CheckBoxPreference) + findPreference(KEY_ENABLE_ALERT_SPEECH); + mEtwsTestCheckBox = (CheckBoxPreference) + findPreference(KEY_ENABLE_ETWS_TEST_ALERTS); + mChannel50CheckBox = (CheckBoxPreference) + findPreference(KEY_ENABLE_CHANNEL_50_ALERTS); + mCmasCheckBox = (CheckBoxPreference) + findPreference(KEY_ENABLE_CMAS_TEST_ALERTS); + mOptOutCheckBox = (CheckBoxPreference) + findPreference(KEY_SHOW_CMAS_OPT_OUT_DIALOG); + mAlertCategory = (PreferenceCategory) + findPreference(KEY_CATEGORY_ALERT_SETTINGS); + + if(mSir == null) { + mExtremeCheckBox.setEnabled(false); + mSevereCheckBox.setEnabled(false); + mAmberCheckBox.setEnabled(false); + mEmergencyCheckBox.setEnabled(false); + mReminderInterval.setEnabled(false); + mAlertDuration.setEnabled(false); + mVibrateCheckBox.setEnabled(false); + mSpeechCheckBox.setEnabled(false); + mEtwsTestCheckBox.setEnabled(false); + mChannel50CheckBox.setEnabled(false); + mCmasCheckBox.setEnabled(false); + mOptOutCheckBox.setEnabled(false); + return; + } // Handler for settings that require us to reconfigure enabled channels in radio Preference.OnPreferenceChangeListener startConfigServiceListener = new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference pref, Object newValue) { - CellBroadcastReceiver.startConfigService(pref.getContext()); - boolean isExtreme = - (pref.getKey()).equals(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS); - if (isExtreme) { - boolean isExtremeAlertChecked = - ((Boolean) newValue).booleanValue(); - CheckBoxPreference severeCheckBox = (CheckBoxPreference) - findPreference(KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS); - if (severeCheckBox != null) { - severeCheckBox.setEnabled(isExtremeAlertChecked); - severeCheckBox.setChecked(false); - } + int newVal = (((Boolean) newValue).booleanValue()) ? 1 : 0; + + switch (pref.getKey()) { + case KEY_ENABLE_EMERGENCY_ALERTS: + SubscriptionManager + .setSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_EMERGENCY_ALERT, + newVal + ""); + break; + case KEY_ENABLE_CHANNEL_50_ALERTS: + SubscriptionManager + .setSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_CHANNEL_50_ALERT, + newVal + ""); + break; + case KEY_ENABLE_ETWS_TEST_ALERTS: + SubscriptionManager + .setSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_ETWS_TEST_ALERT, + newVal + ""); + break; + case KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS: + SubscriptionManager + .setSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_EXTREME_THREAT_ALERT, + newVal + ""); + if (newVal == 1) { + SubscriptionManager + .setSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_SEVERE_THREAT_ALERT, + "0"); + } + boolean isExtremeAlertChecked = + ((Boolean) newValue).booleanValue(); + + if (mSevereCheckBox != null) { + mSevereCheckBox.setEnabled(isExtremeAlertChecked); + mSevereCheckBox.setChecked(false); + } + break; + case KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS: + SubscriptionManager + .setSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_SEVERE_THREAT_ALERT, + newVal + ""); + break; + case KEY_ENABLE_CMAS_AMBER_ALERTS: + SubscriptionManager + .setSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_AMBER_ALERT, + newVal + ""); + break; + case KEY_ENABLE_CMAS_TEST_ALERTS: + SubscriptionManager + .setSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_CMAS_TEST_ALERT, + newVal + ""); + break; + default: + Log.d(TAG, "Invalid preference changed"); + } + + CellBroadcastReceiver.startConfigService(pref.getContext(), + mSir.getSubscriptionId()); return true; } }; // Show extra settings when developer options is enabled in settings. - boolean enableDevSettings = Settings.Global.getInt(getActivity().getContentResolver(), + boolean enableDevSettings = Settings.Global.getInt(getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; - Resources res = getResources(); - boolean showEtwsSettings = res.getBoolean(R.bool.show_etws_settings); - - // Emergency alert preference category (general and CMAS preferences). - PreferenceCategory alertCategory = (PreferenceCategory) - findPreference(KEY_CATEGORY_ALERT_SETTINGS); + boolean showEtwsSettings = SubscriptionManager.getResourcesForSubId( + getApplicationContext(), mSir.getSubscriptionId()) + .getBoolean(R.bool.show_etws_settings); + String queryReturnVal; // alert reminder interval - ListPreference interval = (ListPreference) findPreference(KEY_ALERT_REMINDER_INTERVAL); - interval.setSummary(interval.getEntry()); - interval.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference pref, Object newValue) { - final ListPreference listPref = (ListPreference) pref; - final int idx = listPref.findIndexOfValue((String) newValue); - listPref.setSummary(listPref.getEntries()[idx]); - return true; - } - }); + queryReturnVal = SubscriptionManager.getIntegerSubscriptionProperty( + mSir.getSubscriptionId(), SubscriptionManager.CB_ALERT_REMINDER_INTERVAL, + Integer.parseInt(ALERT_REMINDER_INTERVAL), this) + ""; + + mReminderInterval.setValue(queryReturnVal); + mReminderInterval.setSummary(mReminderInterval + .getEntries()[mReminderInterval.findIndexOfValue(queryReturnVal)]); + + mReminderInterval.setOnPreferenceChangeListener( + new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference pref, Object newValue) { + final ListPreference listPref = (ListPreference) pref; + final int idx = listPref.findIndexOfValue((String) newValue); + listPref.setSummary(listPref.getEntries()[idx]); + SubscriptionManager.setSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_ALERT_REMINDER_INTERVAL, + (String) newValue); + return true; + } + }); // Show alert settings and ETWS categories for ETWS builds and developer mode. if (enableDevSettings || showEtwsSettings) { // enable/disable all alerts - Preference enablePwsAlerts = findPreference(KEY_ENABLE_EMERGENCY_ALERTS); - if (enablePwsAlerts != null) { - enablePwsAlerts.setOnPreferenceChangeListener(startConfigServiceListener); + if (mEmergencyCheckBox != null) { + if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_EMERGENCY_ALERT, true, this)) { + mEmergencyCheckBox.setChecked(true); + } else { + mEmergencyCheckBox.setChecked(false); + } + mEmergencyCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); } // alert sound duration - ListPreference duration = (ListPreference) findPreference(KEY_ALERT_SOUND_DURATION); - duration.setSummary(duration.getEntry()); - duration.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference pref, Object newValue) { - final ListPreference listPref = (ListPreference) pref; - final int idx = listPref.findIndexOfValue((String) newValue); - listPref.setSummary(listPref.getEntries()[idx]); - return true; - } - }); + queryReturnVal = SubscriptionManager.getIntegerSubscriptionProperty( + mSir.getSubscriptionId(), SubscriptionManager.CB_ALERT_SOUND_DURATION, + Integer.parseInt(ALERT_SOUND_DEFAULT_DURATION), this) + ""; + mAlertDuration.setValue(queryReturnVal); + mAlertDuration.setSummary(mAlertDuration + .getEntries()[mAlertDuration.findIndexOfValue(queryReturnVal)]); + mAlertDuration.setOnPreferenceChangeListener( + new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference pref, Object newValue) { + final ListPreference listPref = (ListPreference) pref; + final int idx = listPref.findIndexOfValue((String) newValue); + listPref.setSummary(listPref.getEntries()[idx]); + SubscriptionManager.setSubscriptionProperty( + mSir.getSubscriptionId(), + SubscriptionManager.CB_ALERT_SOUND_DURATION, + (String) newValue); + return true; + } + }); } else { // Remove general emergency alert preference items (not shown for CMAS builds). - alertCategory.removePreference(findPreference(KEY_ENABLE_EMERGENCY_ALERTS)); - alertCategory.removePreference(findPreference(KEY_ALERT_SOUND_DURATION)); - alertCategory.removePreference(findPreference(KEY_ENABLE_ALERT_SPEECH)); + mAlertCategory.removePreference(findPreference(KEY_ENABLE_EMERGENCY_ALERTS)); + mAlertCategory.removePreference(findPreference(KEY_ALERT_SOUND_DURATION)); + mAlertCategory.removePreference(findPreference(KEY_ENABLE_ALERT_SPEECH)); // Remove ETWS preference category. - preferenceScreen.removePreference(findPreference(KEY_CATEGORY_ETWS_SETTINGS)); + prefScreen.removePreference(findPreference(KEY_CATEGORY_ETWS_SETTINGS)); } - if (!res.getBoolean(R.bool.show_cmas_settings)) { + if (!SubscriptionManager.getResourcesForSubId(getApplicationContext(), + mSir.getSubscriptionId()).getBoolean(R.bool.show_cmas_settings)) { // Remove CMAS preference items in emergency alert category. - alertCategory.removePreference( + mAlertCategory.removePreference( findPreference(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS)); - alertCategory.removePreference( + mAlertCategory.removePreference( findPreference(KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS)); - alertCategory.removePreference(findPreference(KEY_ENABLE_CMAS_AMBER_ALERTS)); + mAlertCategory.removePreference(findPreference(KEY_ENABLE_CMAS_AMBER_ALERTS)); } - TelephonyManager tm = (TelephonyManager) getActivity().getSystemService( - Context.TELEPHONY_SERVICE); - - boolean enableChannel50Support = res.getBoolean(R.bool.show_brazil_settings) || - "br".equals(tm.getSimCountryIso()); + boolean enableChannel50Support = SubscriptionManager.getResourcesForSubId( + getApplicationContext(), mSir.getSubscriptionId()).getBoolean( + R.bool.show_brazil_settings) + || "br".equals(mTelephonyManager.getSimCountryIso()); if (!enableChannel50Support) { - preferenceScreen.removePreference(findPreference(KEY_CATEGORY_BRAZIL_SETTINGS)); + prefScreen.removePreference(findPreference(KEY_CATEGORY_BRAZIL_SETTINGS)); } if (!enableDevSettings) { - preferenceScreen.removePreference(findPreference(KEY_CATEGORY_DEV_SETTINGS)); + prefScreen.removePreference(findPreference(KEY_CATEGORY_DEV_SETTINGS)); } - Preference enableChannel50Alerts = findPreference(KEY_ENABLE_CHANNEL_50_ALERTS); - if (enableChannel50Alerts != null) { - enableChannel50Alerts.setOnPreferenceChangeListener(startConfigServiceListener); + if (mSpeechCheckBox != null) { + if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_ALERT_SPEECH, true, this)) { + mSpeechCheckBox.setChecked(true); + } else { + mSpeechCheckBox.setChecked(false); + } + mSpeechCheckBox.setOnPreferenceChangeListener( + new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference pref, Object newValue) { + int newVal = (((Boolean) newValue).booleanValue()) ? 1 : 0; + SubscriptionManager.setSubscriptionProperty( + mSir.getSubscriptionId(), + SubscriptionManager.CB_ALERT_SPEECH, newVal + ""); + return true; + } + }); } - Preference enableEtwsAlerts = findPreference(KEY_ENABLE_ETWS_TEST_ALERTS); - if (enableEtwsAlerts != null) { - enableEtwsAlerts.setOnPreferenceChangeListener(startConfigServiceListener); + + if (mVibrateCheckBox != null) { + if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_ALERT_VIBRATE, true, this)) { + mVibrateCheckBox.setChecked(true); + } else { + mVibrateCheckBox.setChecked(false); + } + mVibrateCheckBox.setOnPreferenceChangeListener( + new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference pref, Object newValue) { + int newVal = (((Boolean) newValue).booleanValue()) ? 1 : 0; + SubscriptionManager.setSubscriptionProperty( + mSir.getSubscriptionId(), + SubscriptionManager.CB_ALERT_VIBRATE, newVal + ""); + return true; + } + }); } - Preference enableCmasExtremeAlerts = - findPreference(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS); - if (enableCmasExtremeAlerts != null) { - enableCmasExtremeAlerts.setOnPreferenceChangeListener(startConfigServiceListener); + + if (mOptOutCheckBox != null) { + if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_OPT_OUT_DIALOG, true, this)) { + mOptOutCheckBox.setChecked(true); + } else { + mOptOutCheckBox.setChecked(false); + } + mOptOutCheckBox.setOnPreferenceChangeListener( + new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference pref, Object newValue) { + int newVal = (((Boolean) newValue).booleanValue()) ? 1 : 0; + SubscriptionManager.setSubscriptionProperty( + mSir.getSubscriptionId(), + SubscriptionManager.CB_OPT_OUT_DIALOG, newVal + ""); + return true; + } + }); } - Preference enableCmasSevereAlerts = - findPreference(KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS); - if (enableCmasSevereAlerts != null) { - enableCmasSevereAlerts.setOnPreferenceChangeListener(startConfigServiceListener); - if (enableCmasExtremeAlerts != null) { + + if (mChannel50CheckBox != null) { + if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_CHANNEL_50_ALERT, true, this)) { + mChannel50CheckBox.setChecked(true); + } else { + mChannel50CheckBox.setChecked(false); + } + mChannel50CheckBox.setOnPreferenceChangeListener(startConfigServiceListener); + } + + if (mEtwsTestCheckBox != null) { + if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_ETWS_TEST_ALERT, false, this)) { + mEtwsTestCheckBox.setChecked(true); + } else { + mEtwsTestCheckBox.setChecked(false); + } + mEtwsTestCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); + } + + if (mExtremeCheckBox != null) { + if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_EXTREME_THREAT_ALERT, true, this)) { + mExtremeCheckBox.setChecked(true); + } else { + mExtremeCheckBox.setChecked(false); + } + mExtremeCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); + } + + if (mSevereCheckBox != null) { + if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_SEVERE_THREAT_ALERT, true, this)) { + mSevereCheckBox.setChecked(true); + } else { + mSevereCheckBox.setChecked(false); + } + mSevereCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); + if (mExtremeCheckBox != null) { boolean isExtremeAlertChecked = - ((CheckBoxPreference)enableCmasExtremeAlerts).isChecked(); - enableCmasSevereAlerts.setEnabled(isExtremeAlertChecked); + ((CheckBoxPreference) mExtremeCheckBox).isChecked(); + mSevereCheckBox.setEnabled(isExtremeAlertChecked); } } - Preference enableCmasAmberAlerts = findPreference(KEY_ENABLE_CMAS_AMBER_ALERTS); - if (enableCmasAmberAlerts != null) { - enableCmasAmberAlerts.setOnPreferenceChangeListener(startConfigServiceListener); + + if (mAmberCheckBox != null) { + if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_AMBER_ALERT, true, this)) { + mAmberCheckBox.setChecked(true); + } else { + mAmberCheckBox.setChecked(false); + } + mAmberCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); } - Preference enableCmasTestAlerts = findPreference(KEY_ENABLE_CMAS_TEST_ALERTS); - if (enableCmasTestAlerts != null) { - enableCmasTestAlerts.setOnPreferenceChangeListener(startConfigServiceListener); + + if (mCmasCheckBox != null) { + if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), + SubscriptionManager.CB_CMAS_TEST_ALERT, false, this)) { + mCmasCheckBox.setChecked(true); + } else { + mCmasCheckBox.setChecked(false); + } + mCmasCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); } } + + } + + private OnTabChangeListener mTabListener = new OnTabChangeListener() { + @Override + public void onTabChanged(String tabId) { + final int slotId = Integer.parseInt(tabId); + mSir = mSelectableSubInfos.get(slotId); + updatePreferences(); + } + }; + + private TabContentFactory mEmptyTabContent = new TabContentFactory() { + @Override + public View createTabContent(String tag) { + return new View(mTabHost.getContext()); + } + }; + + private TabSpec buildTabSpec(String tag, String title) { + return mTabHost.newTabSpec(tag).setIndicator(title).setContent( + mEmptyTabContent); + } + + public 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) { + return sir; + } + } + } + + return null; + } + } |