Add MSIM support for FDN.
Show title and get the Phone object to modify FDN settings for
according to subscription..
+ Add helper to provide common functionality for setting/getting
extras, getting the appropriate phone for a given subscription id,
and other miscellaneous things.
+ Show the subscription label in actionbar title of Call settings,
FDN settings, and FDN list. I didn't do this for edit/delete because
they have really long titles, and the context didn't seem necessary
at that point.
+ Pass the subscription label/id along in intents to the various FDN
setting activities.
+ Get the correct phone, so FDN setting changes are SIM-specific.
+ Take into account subscription id when providing a Uri for
modifying FDN settings, so that FDN contacts can be modified on a
per-sim basis.
- Delete some unused strings.
Bug: 18233666
Bug: 18232723
Bug: 18114923
Change-Id: I05c7149382adb7e7af36d38bab8a6875d5b20609
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4c7f558..5701dfb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -180,7 +180,7 @@
<!-- Cell Broadcast settings title. [CHAR LIMIT=50] -->
<string name="cell_broadcast_settings">Emergency broadcasts</string>
<!-- Call settings screen title -->
- <string name="call_settings">Call Settings</string>
+ <string name="call_settings">Call settings</string>
<!-- GSM Call settings screen, setting option name -->
<string name="additional_gsm_call_settings">Additional settings</string>
<!-- GSM-only Call settings screen, setting option name-->
@@ -260,6 +260,8 @@
<!-- Title of the progress dialog displayed while updating Call settings -->
<string name="updating_title">Call settings</string>
+ <!-- Title of the "Call settings" settings screen, with a text label identifying which SIM the settings are for. -->
+ <string name="call_settings_with_label">Call settings (<xliff:g id="subscriptionlabel" example="Verizon">%s</xliff:g>)</string>
<!-- Title of the alert dialog displayed if an error occurs while updating Call settings -->
<string name="error_updating_title">Call settings error</string>
<!-- Toast in Call settings dialog while settings are being read -->
@@ -688,11 +690,17 @@
<string name="carrier_settings_title">Carrier settings</string>
<!-- FDN settings strings -->
- <!-- Call settings screen, setting option name -->
+ <!-- Label for "Fixed Dialing Number" settings in call settings. -->
<string name="fdn">Fixed Dialing Numbers</string>
- <!-- Call settings screen, button label that takes you to
- the Fixed Dialing Number management screen -->
+ <!-- Title for "Fixed Dialing Number" settings, with a label to identify the SIM the settings
+ apply to. -->
+ <string name="fdn_with_label">Fixed Dialing Numbers (<xliff:g id="subscriptionlabel" example="Verizon">%s</xliff:g>)</string>
+
+ <!-- Call settings screen, button label that takes you to the Fixed Dialing Number management screen -->
<string name="manage_fdn_list">FDN list</string>
+ <!-- Title for settings screen to manage Fixed Dialing Number contacts, with a label to identify
+ the SIM the settings apply to. -->
+ <string name="fdn_list_with_label">FDN list (<xliff:g id="subscriptionlabel" example="Verizon">%s</xliff:g>)</string>
<!-- Call settings screen, preference item label -->
<string name="fdn_activation">FDN activation</string>
<!-- Call settings setting option name when FDN is enabled -->
@@ -854,9 +862,6 @@
<!-- SIM PIN screen: button label -->
<string name="doneButton">Done</string>
- <!-- In-call screen: status label for a conference call -->
- <string name="caller_manage_header">Conference call <xliff:g id="conf_call_time">%s</xliff:g></string>
-
<!-- Used in FakePhoneActivity test code. DO NOT TRANSLATE. -->
<string name="fake_phone_activity_phoneNumber_text" translatable="false">(650) 555-1234</string>
<!-- Used in FakePhoneActivity test code. DO NOT TRANSLATE. -->
@@ -884,9 +889,6 @@
<string name="card_title_hanging_up">Hanging up</string>
<!-- In-call screen: status label for a call that's in CDMA flash mode -->
<string name="card_title_in_call">In call</string>
- <!-- In-call screen: special status label that shows your own phone
- number during emergency callback mode (ECM) [CHAR LIMIT=30] -->
- <string name="card_title_my_phone_number">My number is <xliff:g id="my_phone_number">%s</xliff:g></string>
<!-- Notification strings -->
<!-- The "label" of the in-call Notification for a dialing call, used
diff --git a/res/xml/call_feature_setting.xml b/res/xml/call_feature_setting.xml
index bcda6b0..0182ac0 100644
--- a/res/xml/call_feature_setting.xml
+++ b/res/xml/call_feature_setting.xml
@@ -15,7 +15,7 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:phone="http://schemas.android.com/apk/res/com.android.phone"
- android:title="@string/updating_title">
+ android:title="@string/call_settings">
<PreferenceScreen
android:key="phone_account_settings_preference_screen"
@@ -81,13 +81,7 @@
<PreferenceScreen
android:key="button_fdn_key"
android:title="@string/fdn"
- android:persistent="false">
-
- <intent android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.phone"
- android:targetClass="com.android.phone.settings.fdn.FdnSetting" />
-
- </PreferenceScreen>
+ android:persistent="false" />
<CheckBoxPreference
android:key="button_enable_video_calling"
diff --git a/res/xml/fdn_setting.xml b/res/xml/fdn_setting.xml
index d03cf7c..7501dc8 100644
--- a/res/xml/fdn_setting.xml
+++ b/res/xml/fdn_setting.xml
@@ -30,17 +30,12 @@
android:summary="@string/sum_fdn_change_pin"
android:persistent="false"/>
+ <!-- The intent to launch the FDN List is set on this PreferenceScreen in FdnSetting, so that
+ its extras can be dynamically changed to include subscription information. -->
<PreferenceScreen
- android:key="button_fdn_list_key"
+ android:key="fdn_list_pref_screen_key"
android:title="@string/manage_fdn_list"
android:summary="@string/sum_fdn_manage_list"
- android:persistent="false">
-
- <!-- Intent to lauch the FDN list. -->
- <intent android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.phone"
- android:targetClass="com.android.phone.settings.fdn.FdnList" />
-
- </PreferenceScreen>
+ android:persistent="false"/>
</PreferenceScreen>
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index d254f8f..5c11521 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -64,6 +64,7 @@
import com.android.phone.settings.AccountSelectionPreference;
import com.android.phone.settings.VoicemailProviderSettings;
import com.android.phone.settings.VoicemailProviderSettingsUtil;
+import com.android.phone.settings.fdn.FdnSetting;
import com.android.services.telephony.sip.SipUtil;
import java.lang.String;
@@ -114,13 +115,6 @@
// to trigger its configuration UI
public static final String ACTION_CONFIGURE_VOICEMAIL =
"com.android.phone.CallFeaturesSetting.CONFIGURE_VOICEMAIL";
- // Extra on intent to Call Settings containing the id of the subscription to modify.
- public static final String SUB_ID_EXTRA =
- "com.android.phone.CallFeaturesSetting.SubscriptionId";
- // Extra on intent to Call Settings containing the label of the subscription to modify.
- public static final String SUB_LABEL_EXTRA =
- "com.android.phone.CallFeaturesSetting.SubscriptionLabel";
-
// Extra put in the return from VM provider config containing voicemail number to set
public static final String VM_NUMBER_EXTRA = "com.android.phone.VoicemailNumber";
// Extra put in the return from VM provider config containing call forwarding number to set
@@ -215,6 +209,8 @@
private static final String VOICEMAIL_VIBRATION_ALWAYS = "always";
private static final String VOICEMAIL_VIBRATION_NEVER = "never";
+ private SubscriptionInfoHelper mSubscriptionInfoHelper;
+
private EditPhoneNumberPreference mSubMenuVoicemailSettings;
/** Whether dialpad plays DTMF tone or not. */
@@ -1250,7 +1246,7 @@
} else if (id == VOICEMAIL_FWD_SAVING_DIALOG || id == VOICEMAIL_FWD_READING_DIALOG ||
id == VOICEMAIL_REVERTING_DIALOG) {
ProgressDialog dialog = new ProgressDialog(this);
- dialog.setTitle(getText(R.string.updating_title));
+ dialog.setTitle(getText(R.string.call_settings));
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.setMessage(getText(
@@ -1319,7 +1315,11 @@
// ACTION_ADD_VOICEMAIL action.
mShowVoicemailPreference = (icicle == null) &&
getIntent().getAction().equals(ACTION_ADD_VOICEMAIL);
- }
+
+ mSubscriptionInfoHelper = new SubscriptionInfoHelper(getIntent());
+ mSubscriptionInfoHelper.setActionBarTitle(
+ getActionBar(), getResources(), R.string.call_settings_with_label);
+ }
private void initPhoneAccountPreferences() {
mPhoneAccountSettingsPreference = findPreference(PHONE_ACCOUNT_SETTINGS_KEY);
@@ -1350,6 +1350,7 @@
}
addPreferencesFromResource(R.xml.call_feature_setting);
+
initPhoneAccountPreferences();
PreferenceScreen prefSet = getPreferenceScreen();
@@ -1427,15 +1428,16 @@
}
int phoneType = mPhone.getPhoneType();
+ Preference fdnButton = prefSet.findPreference(BUTTON_FDN_KEY);
if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
- Preference fdnButton = prefSet.findPreference(BUTTON_FDN_KEY);
- if (fdnButton != null) {
- prefSet.removePreference(fdnButton);
- }
+ prefSet.removePreference(fdnButton);
+
if (!getResources().getBoolean(R.bool.config_voice_privacy_disable)) {
addPreferencesFromResource(R.xml.cdma_call_privacy);
}
} else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
+ fdnButton.setIntent(mSubscriptionInfoHelper.getIntent(this, FdnSetting.class));
+
if (getResources().getBoolean(R.bool.config_additional_call_setting)) {
addPreferencesFromResource(R.xml.gsm_umts_call_options);
}
diff --git a/src/com/android/phone/SubscriptionInfoHelper.java b/src/com/android/phone/SubscriptionInfoHelper.java
new file mode 100644
index 0000000..926a156
--- /dev/null
+++ b/src/com/android/phone/SubscriptionInfoHelper.java
@@ -0,0 +1,116 @@
+/**
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone;
+
+import android.app.ActionBar;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.telephony.SubInfoRecord;
+import android.telephony.SubscriptionManager;
+import android.text.TextUtils;
+
+import com.android.phone.PhoneGlobals;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneFactory;
+
+/**
+ * Helper for manipulating intents or components with subscription-related information.
+ *
+ * In settings, subscription ids and labels are passed along to indicate that settings
+ * are being changed for particular subscriptions. This helper provides functions for
+ * helping extract this info and perform common operations using this info.
+ */
+public class SubscriptionInfoHelper {
+ private static final int NO_SUB_ID = -1;
+
+ // Extra on intent containing the id of a subscription.
+ private static final String SUB_ID_EXTRA =
+ "com.android.phone.settings.SubscriptionInfoHelper.SubscriptionId";
+ // Extra on intent containing the label of a subscription.
+ private static final String SUB_LABEL_EXTRA =
+ "com.android.phone.settings.SubscriptionInfoHelper.SubscriptionLabel";
+
+ private static int mSubId = NO_SUB_ID;
+ private static String mSubLabel;
+
+ /**
+ * Instantiates the helper, by extracting the subscription id and label from the intent.
+ */
+ public SubscriptionInfoHelper(Intent intent) {
+ mSubId = intent.getIntExtra(SUB_ID_EXTRA, NO_SUB_ID);
+ mSubLabel = intent.getStringExtra(SUB_LABEL_EXTRA);
+ }
+
+ /**
+ * @param context The context.
+ * @param newActivityClass The class of the activity for the intent to start.
+ * @return Intent containing extras for the subscription id and label if they exist.
+ */
+ public Intent getIntent(Context context, Class newActivityClass) {
+ Intent intent = new Intent(context, newActivityClass);
+
+ if (hasSubId()) {
+ intent.putExtra(SUB_ID_EXTRA, mSubId);
+ }
+
+ if (!TextUtils.isEmpty(mSubLabel)) {
+ intent.putExtra(SUB_LABEL_EXTRA, mSubLabel);
+ }
+
+ return intent;
+ }
+
+ public static void addExtrasToIntent(Intent intent, SubInfoRecord subscription) {
+ intent.putExtra(SubscriptionInfoHelper.SUB_ID_EXTRA, subscription.getSubscriptionId());
+ intent.putExtra(
+ SubscriptionInfoHelper.SUB_LABEL_EXTRA, subscription.getDisplayName().toString());
+ }
+
+ /**
+ * @return Phone object. If a subscription id exists, it returns the phone for the id.
+ */
+ public Phone getPhone() {
+ return hasSubId()
+ ? PhoneFactory.getPhone(SubscriptionManager.getPhoneId(mSubId))
+ : PhoneGlobals.getPhone();
+ }
+
+ /**
+ * Sets the action bar title to the string specified by the given resource id, formatting
+ * it with the subscription label. This assumes the resource string is formattable with a
+ * string-type specifier.
+ *
+ * If the subscription label does not exists, leave the existing title.
+ */
+ public void setActionBarTitle(ActionBar actionBar, Resources res, int resId) {
+ if (actionBar == null || TextUtils.isEmpty(mSubLabel)) {
+ return;
+ }
+
+ String title = String.format(res.getString(resId), mSubLabel);
+ actionBar.setTitle(title);
+ }
+
+ public boolean hasSubId() {
+ return mSubId != NO_SUB_ID;
+ }
+
+ public int getSubId() {
+ return mSubId;
+ }
+}
diff --git a/src/com/android/phone/settings/PhoneAccountSettingsFragment.java b/src/com/android/phone/settings/PhoneAccountSettingsFragment.java
index 09083ac..6f436fd 100644
--- a/src/com/android/phone/settings/PhoneAccountSettingsFragment.java
+++ b/src/com/android/phone/settings/PhoneAccountSettingsFragment.java
@@ -19,6 +19,7 @@
import com.android.phone.R;
import com.android.phone.CallFeaturesSetting;
+import com.android.phone.SubscriptionInfoHelper;
import com.android.services.telephony.sip.SipAccountRegistry;
import com.android.services.telephony.sip.SipSharedPreferences;
import com.android.services.telephony.sip.SipUtil;
@@ -294,8 +295,8 @@
for (SubInfoRecord subscription : SubscriptionManager.getActiveSubInfoList()) {
CharSequence label = subscription.getDisplayName();
Intent intent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
- intent.putExtra(CallFeaturesSetting.SUB_ID_EXTRA, subscription.getSubscriptionId());
- intent.putExtra(CallFeaturesSetting.SUB_LABEL_EXTRA, label);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ SubscriptionInfoHelper.addExtrasToIntent(intent, subscription);
Preference accountPreference = new Preference(mApplicationContext);
accountPreference.setTitle(label);
diff --git a/src/com/android/phone/settings/fdn/DeleteFdnContactScreen.java b/src/com/android/phone/settings/fdn/DeleteFdnContactScreen.java
index c0fc1e8..d54de43 100644
--- a/src/com/android/phone/settings/fdn/DeleteFdnContactScreen.java
+++ b/src/com/android/phone/settings/fdn/DeleteFdnContactScreen.java
@@ -31,6 +31,7 @@
import com.android.phone.PhoneGlobals;
import com.android.phone.R;
+import com.android.phone.SubscriptionInfoHelper;
import static android.view.Window.PROGRESS_VISIBILITY_OFF;
import static android.view.Window.PROGRESS_VISIBILITY_ON;
@@ -47,6 +48,8 @@
private static final int PIN2_REQUEST_CODE = 100;
+ private SubscriptionInfoHelper mSubscriptionInfoHelper;
+
private String mName;
private String mNumber;
private String mPin2;
@@ -92,6 +95,8 @@
private void resolveIntent() {
Intent intent = getIntent();
+ mSubscriptionInfoHelper = new SubscriptionInfoHelper(intent);
+
mName = intent.getStringExtra(INTENT_EXTRA_NAME);
mNumber = intent.getStringExtra(INTENT_EXTRA_NUMBER);
@@ -114,7 +119,7 @@
buf.append(mPin2);
buf.append("'");
- Uri uri = Uri.parse("content://icc/fdn");
+ Uri uri = FdnList.getContentUri(mSubscriptionInfoHelper);
mQueryHandler = new QueryHandler(getContentResolver());
mQueryHandler.startDelete(0, null, uri, buf.toString(), null);
@@ -124,6 +129,7 @@
private void authenticatePin2() {
Intent intent = new Intent();
intent.setClass(this, GetPin2Screen.class);
+ intent.setData(FdnList.getContentUri(mSubscriptionInfoHelper));
startActivityForResult(intent, PIN2_REQUEST_CODE);
}
diff --git a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
index 3064a7a..944eaad 100644
--- a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
+++ b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
@@ -49,6 +49,7 @@
import com.android.phone.PhoneGlobals;
import com.android.phone.R;
+import com.android.phone.SubscriptionInfoHelper;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
@@ -68,6 +69,8 @@
private static final int PIN2_REQUEST_CODE = 100;
+ private SubscriptionInfoHelper mSubscriptionInfoHelper;
+
private String mName;
private String mNumber;
private String mPin2;
@@ -107,8 +110,7 @@
getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.edit_fdn_contact_screen);
setupView();
- setTitle(mAddContact ?
- R.string.add_fdn_contact : R.string.edit_fdn_contact);
+ setTitle(mAddContact ? R.string.add_fdn_contact : R.string.edit_fdn_contact);
displayProgress(false);
}
@@ -214,6 +216,8 @@
private void resolveIntent() {
Intent intent = getIntent();
+ mSubscriptionInfoHelper = new SubscriptionInfoHelper(intent);
+
mName = intent.getStringExtra(INTENT_EXTRA_NAME);
mNumber = intent.getStringExtra(INTENT_EXTRA_NUMBER);
@@ -266,10 +270,6 @@
return mNumberField.getText().toString();
}
- private Uri getContentURI() {
- return Uri.parse("content://icc/fdn");
- }
-
/**
* @param number is voice mail number
* @return true if number length is less than 20-digit limit
@@ -291,7 +291,7 @@
return;
}
- Uri uri = getContentURI();
+ Uri uri = FdnList.getContentUri(mSubscriptionInfoHelper);
ContentValues bundle = new ContentValues(3);
bundle.put("tag", getNameFromTextField());
@@ -314,7 +314,7 @@
handleResult(false, true);
return;
}
- Uri uri = getContentURI();
+ Uri uri = FdnList.getContentUri(mSubscriptionInfoHelper);
ContentValues bundle = new ContentValues();
bundle.put("tag", mName);
@@ -335,8 +335,7 @@
private void deleteSelected() {
// delete ONLY if this is NOT a new contact.
if (!mAddContact) {
- Intent intent = new Intent();
- intent.setClass(this, DeleteFdnContactScreen.class);
+ Intent intent = mSubscriptionInfoHelper.getIntent(this, DeleteFdnContactScreen.class);
intent.putExtra(INTENT_EXTRA_NAME, mName);
intent.putExtra(INTENT_EXTRA_NUMBER, mNumber);
startActivity(intent);
@@ -347,6 +346,7 @@
private void authenticatePin2() {
Intent intent = new Intent();
intent.setClass(this, GetPin2Screen.class);
+ intent.setData(FdnList.getContentUri(mSubscriptionInfoHelper));
startActivityForResult(intent, PIN2_REQUEST_CODE);
}
diff --git a/src/com/android/phone/settings/fdn/FdnList.java b/src/com/android/phone/settings/fdn/FdnList.java
index 0f189d4..d7bfde2 100644
--- a/src/com/android/phone/settings/fdn/FdnList.java
+++ b/src/com/android/phone/settings/fdn/FdnList.java
@@ -26,8 +26,9 @@
import android.view.View;
import android.widget.ListView;
-import com.android.phone.R;
import com.android.phone.ADNList;
+import com.android.phone.R;
+import com.android.phone.SubscriptionInfoHelper;
/**
* Fixed Dialing Number (FDN) List UI for the Phone app. FDN is a feature of the service provider
@@ -41,6 +42,11 @@
private static final String INTENT_EXTRA_NAME = "name";
private static final String INTENT_EXTRA_NUMBER = "number";
+ private static final Uri FDN_CONTENT_URI = Uri.parse("content://icc/fdn");
+ private static final String FDN_CONTENT_PATH_WITH_SUB_ID = "content://icc/fdn/subId/";
+
+ private SubscriptionInfoHelper mSubscriptionInfoHelper;
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -50,12 +56,16 @@
// android.R.id.home will be triggered in onOptionsItemSelected()
actionBar.setDisplayHomeAsUpEnabled(true);
}
+
+ mSubscriptionInfoHelper = new SubscriptionInfoHelper(getIntent());
+ mSubscriptionInfoHelper.setActionBarTitle(
+ getActionBar(), getResources(), R.string.fdn_list_with_label);
}
@Override
protected Uri resolveIntent() {
Intent intent = getIntent();
- intent.setData(Uri.parse("content://icc/fdn"));
+ intent.setData(getContentUri(mSubscriptionInfoHelper));
return intent.getData();
}
@@ -91,7 +101,7 @@
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: // See ActionBar#setDisplayHomeAsUpEnabled()
- Intent intent = new Intent(this, FdnSetting.class);
+ Intent intent = mSubscriptionInfoHelper.getIntent(this, FdnSetting.class);
intent.setAction(Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
@@ -121,10 +131,8 @@
}
private void addContact() {
- // if we don't put extras "name" when starting this activity, then
- // EditFdnContactScreen treats it like add contact.
- Intent intent = new Intent();
- intent.setClass(this, EditFdnContactScreen.class);
+ //If there is no INTENT_EXTRA_NAME provided, EditFdnContactScreen treats it as an "add".
+ Intent intent = mSubscriptionInfoHelper.getIntent(this, EditFdnContactScreen.class);
startActivity(intent);
}
@@ -146,8 +154,7 @@
String name = mCursor.getString(NAME_COLUMN);
String number = mCursor.getString(NUMBER_COLUMN);
- Intent intent = new Intent();
- intent.setClass(this, EditFdnContactScreen.class);
+ Intent intent = mSubscriptionInfoHelper.getIntent(this, EditFdnContactScreen.class);
intent.putExtra(INTENT_EXTRA_NAME, name);
intent.putExtra(INTENT_EXTRA_NUMBER, number);
startActivity(intent);
@@ -159,11 +166,20 @@
String name = mCursor.getString(NAME_COLUMN);
String number = mCursor.getString(NUMBER_COLUMN);
- Intent intent = new Intent();
- intent.setClass(this, DeleteFdnContactScreen.class);
+ Intent intent = mSubscriptionInfoHelper.getIntent(this, DeleteFdnContactScreen.class);
intent.putExtra(INTENT_EXTRA_NAME, name);
intent.putExtra(INTENT_EXTRA_NUMBER, number);
startActivity(intent);
}
}
+
+ /**
+ * Returns the uri for updating the ICC FDN entry, taking into account the subscription id.
+ */
+ public static Uri getContentUri(SubscriptionInfoHelper subscriptionInfoHelper) {
+ return subscriptionInfoHelper.hasSubId()
+ ? Uri.parse(FDN_CONTENT_PATH_WITH_SUB_ID + subscriptionInfoHelper.getSubId())
+ : FDN_CONTENT_URI;
+ }
+
}
diff --git a/src/com/android/phone/settings/fdn/FdnSetting.java b/src/com/android/phone/settings/fdn/FdnSetting.java
index 35e15e5..8716d37 100644
--- a/src/com/android/phone/settings/fdn/FdnSetting.java
+++ b/src/com/android/phone/settings/fdn/FdnSetting.java
@@ -35,6 +35,7 @@
import com.android.phone.CallFeaturesSetting;
import com.android.phone.PhoneGlobals;
import com.android.phone.R;
+import com.android.phone.SubscriptionInfoHelper;
/**
* FDN settings UI for the Phone app.
@@ -46,6 +47,7 @@
private static final String LOG_TAG = PhoneGlobals.LOG_TAG;
private static final boolean DBG = false;
+ private SubscriptionInfoHelper mSubscriptionInfoHelper;
private Phone mPhone;
/**
@@ -56,10 +58,9 @@
private static final int EVENT_PIN2_CHANGE_COMPLETE = 200;
// String keys for preference lookup
- // We only care about the pin preferences here, the manage FDN contacts
- // Preference is handled solely in xml.
private static final String BUTTON_FDN_ENABLE_KEY = "button_fdn_enable_key";
private static final String BUTTON_CHANGE_PIN2_KEY = "button_change_pin2_key";
+ private static final String FDN_LIST_PREF_SCREEN_KEY = "fdn_list_pref_screen_key";
private EditPinPreference mButtonEnableFDN;
private EditPinPreference mButtonChangePin2;
@@ -454,9 +455,10 @@
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
- addPreferencesFromResource(R.xml.fdn_setting);
+ mSubscriptionInfoHelper = new SubscriptionInfoHelper(getIntent());
+ mPhone = mSubscriptionInfoHelper.getPhone();
- mPhone = PhoneGlobals.getPhone();
+ addPreferencesFromResource(R.xml.fdn_setting);
//get UI object references
PreferenceScreen prefSet = getPreferenceScreen();
@@ -469,6 +471,10 @@
mButtonChangePin2.setOnPinEnteredListener(this);
+ PreferenceScreen fdnListPref =
+ (PreferenceScreen) prefSet.findPreference(FDN_LIST_PREF_SCREEN_KEY);
+ fdnListPref.setIntent(mSubscriptionInfoHelper.getIntent(this, FdnList.class));
+
// Only reset the pin change dialog if we're not in the middle of changing it.
if (icicle == null) {
resetPinChangeState();
@@ -485,13 +491,15 @@
if (actionBar != null) {
// android.R.id.home will be triggered in onOptionsItemSelected()
actionBar.setDisplayHomeAsUpEnabled(true);
+ mSubscriptionInfoHelper.setActionBarTitle(
+ actionBar, getResources(), R.string.fdn_with_label);
}
}
@Override
protected void onResume() {
super.onResume();
- mPhone = PhoneGlobals.getPhone();
+ mPhone = mSubscriptionInfoHelper.getPhone();
updateEnableFDN();
}