1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/*
2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2015 The Android Open Source Project
3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Licensed under the Apache License, Version 2.0 (the "License");
5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you may not use this file except in compliance with the License.
6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * You may obtain a copy of the License at
7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *      http://www.apache.org/licenses/LICENSE-2.0
9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Unless required by applicable law or agreed to in writing, software
11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * distributed under the License is distributed on an "AS IS" BASIS,
12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * See the License for the specific language governing permissions and
14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * limitations under the License.
15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */
16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpackage com.android.messaging.ui.appsettings;
18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.app.FragmentTransaction;
20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.ActivityNotFoundException;
21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.Intent;
22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.SharedPreferences;
23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.SharedPreferences.OnSharedPreferenceChangeListener;
24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.pm.PackageManager;
25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.os.Bundle;
26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.Preference;
27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.Preference.OnPreferenceClickListener;
28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.PreferenceCategory;
29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.PreferenceFragment;
30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.PreferenceScreen;
31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.support.v4.app.NavUtils;
32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.text.TextUtils;
33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.MenuItem;
34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.Factory;
36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.R;
37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.datamodel.ParticipantRefresh;
38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.datamodel.data.ParticipantData;
39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.sms.ApnDatabase;
40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.sms.MmsConfig;
41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.sms.MmsUtils;
42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.ui.BugleActionBarActivity;
43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.ui.UIIntents;
44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.Assert;
45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.BuglePrefs;
46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.LogUtil;
47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.PhoneUtils;
48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic class PerSubscriptionSettingsActivity extends BugleActionBarActivity {
50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    protected void onCreate(final Bundle savedInstanceState) {
52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super.onCreate(savedInstanceState);
53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        final String title = getIntent().getStringExtra(
56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                UIIntents.UI_INTENT_EXTRA_PER_SUBSCRIPTION_SETTING_TITLE);
57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (!TextUtils.isEmpty(title)) {
58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            getSupportActionBar().setTitle(title);
59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        } else {
60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // This will fall back to the default title, i.e. "Messaging settings," so No-op.
61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        final FragmentTransaction ft = getFragmentManager().beginTransaction();
64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        final PerSubscriptionSettingsFragment fragment = new PerSubscriptionSettingsFragment();
65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        ft.replace(android.R.id.content, fragment);
66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        ft.commit();
67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public boolean onOptionsItemSelected(final MenuItem item) {
71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        switch (item.getItemId()) {
72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        case android.R.id.home:
73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            NavUtils.navigateUpFromSameTask(this);
74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            return true;
75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return super.onOptionsItemSelected(item);
77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public static class PerSubscriptionSettingsFragment extends PreferenceFragment
80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            implements OnSharedPreferenceChangeListener {
81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private PhoneNumberPreference mPhoneNumberPreference;
82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private Preference mGroupMmsPreference;
83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private String mGroupMmsPrefKey;
84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private String mPhoneNumberKey;
85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private int mSubId;
86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public PerSubscriptionSettingsFragment() {
88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // Required empty constructor
89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        @Override
92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public void onCreate(final Bundle savedInstanceState) {
93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            super.onCreate(savedInstanceState);
94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // Get sub id from launch intent
96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final Intent intent = getActivity().getIntent();
97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            Assert.notNull(intent);
98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mSubId = (intent != null) ? intent.getIntExtra(UIIntents.UI_INTENT_EXTRA_SUB_ID,
99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    ParticipantData.DEFAULT_SELF_SUB_ID) : ParticipantData.DEFAULT_SELF_SUB_ID;
100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final BuglePrefs subPrefs = Factory.get().getSubscriptionPrefs(mSubId);
102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            getPreferenceManager().setSharedPreferencesName(subPrefs.getSharedPreferencesName());
103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            addPreferencesFromResource(R.xml.preferences_per_subscription);
104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mPhoneNumberKey = getString(R.string.mms_phone_number_pref_key);
106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mPhoneNumberPreference = (PhoneNumberPreference) findPreference(mPhoneNumberKey);
107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final PreferenceCategory advancedCategory = (PreferenceCategory)
108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    findPreference(getString(R.string.advanced_category_pref_key));
109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final PreferenceCategory mmsCategory = (PreferenceCategory)
110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    findPreference(getString(R.string.mms_messaging_category_pref_key));
111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mPhoneNumberPreference.setDefaultPhoneNumber(
113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    PhoneUtils.get(mSubId).getCanonicalForSelf(false/*allowOverride*/), mSubId);
114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mGroupMmsPrefKey = getString(R.string.group_mms_pref_key);
116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mGroupMmsPreference = findPreference(mGroupMmsPrefKey);
117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (!MmsConfig.get(mSubId).getGroupMmsEnabled()) {
118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // Always show group messaging setting even if the SIM has no number
119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // If broadcast sms is selected, the SIM number is not needed
120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // If group mms is selected, the phone number dialog will popup when message
121d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // is being sent, making sure we will have a self number for group mms.
122d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mmsCategory.removePreference(mGroupMmsPreference);
123d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            } else {
124d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mGroupMmsPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
125d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    @Override
126d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    public boolean onPreferenceClick(Preference pref) {
127d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        GroupMmsSettingDialog.showDialog(getActivity(), mSubId);
128d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        return true;
129d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    }
130d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                });
131d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                updateGroupMmsPrefSummary();
132d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
133d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
134d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (!MmsConfig.get(mSubId).getSMSDeliveryReportsEnabled()) {
135d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final Preference deliveryReportsPref = findPreference(
136d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        getString(R.string.delivery_reports_pref_key));
137d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mmsCategory.removePreference(deliveryReportsPref);
138d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
139d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final Preference wirelessAlertPref = findPreference(getString(
140d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    R.string.wireless_alerts_key));
141d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (!isCellBroadcastAppLinkEnabled()) {
142d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                advancedCategory.removePreference(wirelessAlertPref);
143d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            } else {
144d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                wirelessAlertPref.setOnPreferenceClickListener(
145d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        new Preference.OnPreferenceClickListener() {
146d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                            @Override
147d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                            public boolean onPreferenceClick(final Preference preference) {
148d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                                try {
149d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                                    startActivity(UIIntents.get().getWirelessAlertsIntent());
150d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                                } catch (final ActivityNotFoundException e) {
151d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                                    // Handle so we shouldn't crash if the wireless alerts
152d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                                    // implementation is broken.
153d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                                    LogUtil.e(LogUtil.BUGLE_TAG,
154d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                                            "Failed to launch wireless alerts activity", e);
155d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                                }
156d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                                return true;
157d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                            }
158d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        });
159d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
160d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
161d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // Access Point Names (APNs)
162d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final Preference apnsPref = findPreference(getString(R.string.sms_apns_key));
163d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
164d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (MmsUtils.useSystemApnTable() && !ApnDatabase.doesDatabaseExist()) {
165d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // Don't remove the ability to edit the local APN prefs if this device lets us
166d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // access the system APN, but we can't find the MCC/MNC in the APN table and we
167d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // created the local APN table in case the MCC/MNC was in there. In other words,
168d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // if the local APN table exists, let the user edit it.
169d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                advancedCategory.removePreference(apnsPref);
170d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            } else {
171d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final PreferenceScreen apnsScreen = (PreferenceScreen) findPreference(
172d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        getString(R.string.sms_apns_key));
173d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                apnsScreen.setIntent(UIIntents.get()
174d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        .getApnSettingsIntent(getPreferenceScreen().getContext(), mSubId));
175d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
176d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
177d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // We want to disable preferences if we are not the default app, but we do all of the
178d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // above first so that the user sees the correct information on the screen
179d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (!PhoneUtils.getDefault().isDefaultSmsApp()) {
180d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mGroupMmsPreference.setEnabled(false);
181d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final Preference autoRetrieveMmsPreference =
182d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        findPreference(getString(R.string.auto_retrieve_mms_pref_key));
183d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                autoRetrieveMmsPreference.setEnabled(false);
184d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final Preference deliveryReportsPreference =
185d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        findPreference(getString(R.string.delivery_reports_pref_key));
186d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                deliveryReportsPreference.setEnabled(false);
187d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
188d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
189d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
190d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private boolean isCellBroadcastAppLinkEnabled() {
191d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (!MmsConfig.get(mSubId).getShowCellBroadcast()) {
192d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return false;
193d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
194d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            try {
195d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final PackageManager pm = getActivity().getPackageManager();
196d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return pm.getApplicationEnabledSetting(UIIntents.CMAS_COMPONENT)
197d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        != PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
198d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            } catch (final IllegalArgumentException ignored) {
199d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // CMAS app not installed.
200d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
201d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            return false;
202d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
203d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
204d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private void updateGroupMmsPrefSummary() {
205d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final boolean groupMmsEnabled = getPreferenceScreen().getSharedPreferences().getBoolean(
206d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    mGroupMmsPrefKey, getResources().getBoolean(R.bool.group_mms_pref_default));
207d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mGroupMmsPreference.setSummary(groupMmsEnabled ?
208d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    R.string.enable_group_mms : R.string.disable_group_mms);
209d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
210d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
211d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        @Override
212d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public void onResume() {
213d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            super.onResume();
214d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            getPreferenceScreen().getSharedPreferences()
215d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    .registerOnSharedPreferenceChangeListener(this);
216d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
217d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
218d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        @Override
219d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences,
220d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final String key) {
221d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (key.equals(mGroupMmsPrefKey)) {
222d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                updateGroupMmsPrefSummary();
223d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            } else if (key.equals(mPhoneNumberKey)) {
224d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // Save the changed phone number in preferences specific to the sub id
225d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final String newPhoneNumber = mPhoneNumberPreference.getText();
226d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final BuglePrefs subPrefs = BuglePrefs.getSubscriptionPrefs(mSubId);
227d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                if (TextUtils.isEmpty(newPhoneNumber)) {
228d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    subPrefs.remove(mPhoneNumberKey);
229d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                } else {
230d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    subPrefs.putString(getString(R.string.mms_phone_number_pref_key),
231d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                            newPhoneNumber);
232d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                }
233d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // Update the self participants so the new phone number will be reflected
234d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // everywhere in the UI.
235d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                ParticipantRefresh.refreshSelfParticipants();
236d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
237d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
238d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
239d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        @Override
240d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public void onPause() {
241d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            super.onPause();
242d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            getPreferenceScreen().getSharedPreferences()
243d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    .unregisterOnSharedPreferenceChangeListener(this);
244d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
245d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
246d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
247