ApplicationSettingsActivity.java revision d3b009ae55651f1e60950342468e3c37fdeb0796
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.Intent; 21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.SharedPreferences; 22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.SharedPreferences.OnSharedPreferenceChangeListener; 23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.media.Ringtone; 24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.media.RingtoneManager; 25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.net.Uri; 26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.os.Bundle; 27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.Preference; 28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.PreferenceFragment; 29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.PreferenceScreen; 30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.RingtonePreference; 31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.TwoStatePreference; 32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.provider.Settings; 33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.support.v4.app.NavUtils; 34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.text.TextUtils; 35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.Menu; 36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.MenuItem; 37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.R; 39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.ui.BugleActionBarActivity; 40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.ui.LicenseActivity; 41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.ui.UIIntents; 42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.BuglePrefs; 43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.DebugUtils; 44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.OsUtil; 45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.PhoneUtils; 46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic class ApplicationSettingsActivity extends BugleActionBarActivity { 48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd protected void onCreate(final Bundle savedInstanceState) { 50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd super.onCreate(savedInstanceState); 51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getSupportActionBar().setDisplayHomeAsUpEnabled(true); 53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final boolean topLevel = getIntent().getBooleanExtra( 54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd UIIntents.UI_INTENT_EXTRA_TOP_LEVEL_SETTINGS, false); 55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (topLevel) { 56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getSupportActionBar().setTitle(getString(R.string.settings_activity_title)); 57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd FragmentTransaction ft = getFragmentManager().beginTransaction(); 60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd ft.replace(android.R.id.content, new ApplicationSettingsFragment()); 61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd ft.commit(); 62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public boolean onCreateOptionsMenu(Menu menu) { 66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (super.onCreateOptionsMenu(menu)) { 67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return true; 68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getMenuInflater().inflate(R.menu.settings_menu, menu); 70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return true; 71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public boolean onOptionsItemSelected(final MenuItem item) { 75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd switch (item.getItemId()) { 76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd case android.R.id.home: 77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd NavUtils.navigateUpFromSameTask(this); 78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return true; 79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd case R.id.action_license: 80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final Intent intent = new Intent(this, LicenseActivity.class); 81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd startActivity(intent); 82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return true; 83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return super.onOptionsItemSelected(item); 85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public static class ApplicationSettingsFragment extends PreferenceFragment implements 88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd OnSharedPreferenceChangeListener { 89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private String mNotificationsEnabledPreferenceKey; 91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private TwoStatePreference mNotificationsEnabledPreference; 92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private String mRingtonePreferenceKey; 93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private RingtonePreference mRingtonePreference; 94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private Preference mVibratePreference; 95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private String mSmsDisabledPrefKey; 96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private Preference mSmsDisabledPreference; 97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private String mSmsEnabledPrefKey; 98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private Preference mSmsEnabledPreference; 99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private boolean mIsSmsPreferenceClicked; 100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public ApplicationSettingsFragment() { 102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // Required empty constructor 103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public void onCreate(final Bundle savedInstanceState) { 107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd super.onCreate(savedInstanceState); 108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceManager().setSharedPreferencesName(BuglePrefs.SHARED_PREFERENCES_NAME); 110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd addPreferencesFromResource(R.xml.preferences_application); 111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mNotificationsEnabledPreferenceKey = 113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getString(R.string.notifications_enabled_pref_key); 114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mNotificationsEnabledPreference = (TwoStatePreference) findPreference( 115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mNotificationsEnabledPreferenceKey); 116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mRingtonePreferenceKey = getString(R.string.notification_sound_pref_key); 117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mRingtonePreference = (RingtonePreference) findPreference(mRingtonePreferenceKey); 118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mVibratePreference = findPreference( 119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getString(R.string.notification_vibration_pref_key)); 120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mSmsDisabledPrefKey = getString(R.string.sms_disabled_pref_key); 121d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mSmsDisabledPreference = findPreference(mSmsDisabledPrefKey); 122d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mSmsEnabledPrefKey = getString(R.string.sms_enabled_pref_key); 123d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mSmsEnabledPreference = findPreference(mSmsEnabledPrefKey); 124d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mIsSmsPreferenceClicked = false; 125d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 126d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final SharedPreferences prefs = getPreferenceScreen().getSharedPreferences(); 127d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd updateSoundSummary(prefs); 128d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 129d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (!DebugUtils.isDebugEnabled()) { 130d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final Preference debugCategory = findPreference(getString( 131d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd R.string.debug_pref_key)); 132d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceScreen().removePreference(debugCategory); 133d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 134d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 135d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final PreferenceScreen advancedScreen = (PreferenceScreen) findPreference( 136d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getString(R.string.advanced_pref_key)); 137d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final boolean topLevel = getActivity().getIntent().getBooleanExtra( 138d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd UIIntents.UI_INTENT_EXTRA_TOP_LEVEL_SETTINGS, false); 139d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (topLevel) { 140d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd advancedScreen.setIntent(UIIntents.get() 141d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd .getAdvancedSettingsIntent(getPreferenceScreen().getContext())); 142d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } else { 143d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // Hide the Advanced settings screen if this is not top-level; these are shown at 144d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // the parent SettingsActivity. 145d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceScreen().removePreference(advancedScreen); 146d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 147d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 148d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 149d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 150d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public boolean onPreferenceTreeClick (PreferenceScreen preferenceScreen, 151d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd Preference preference) { 152d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (preference.getKey() == mSmsDisabledPrefKey || 153d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd preference.getKey() == mSmsEnabledPrefKey) { 154d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mIsSmsPreferenceClicked = true; 155d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 156d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return super.onPreferenceTreeClick(preferenceScreen, preference); 157d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 158d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 159d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private void updateSoundSummary(final SharedPreferences sharedPreferences) { 160d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // The silent ringtone just returns an empty string 161d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd String ringtoneName = mRingtonePreference.getContext().getString( 162d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd R.string.silent_ringtone); 163d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 164d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd String ringtoneString = sharedPreferences.getString(mRingtonePreferenceKey, null); 165d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 166d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // Bootstrap the default setting in the preferences so that we have a valid selection 167d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // in the dialog the first time that the user opens it. 168d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (ringtoneString == null) { 169d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd ringtoneString = Settings.System.DEFAULT_NOTIFICATION_URI.toString(); 170d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final SharedPreferences.Editor editor = sharedPreferences.edit(); 171d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd editor.putString(mRingtonePreferenceKey, ringtoneString); 172d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd editor.apply(); 173d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 174d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 175d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (!TextUtils.isEmpty(ringtoneString)) { 176d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final Uri ringtoneUri = Uri.parse(ringtoneString); 177d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final Ringtone tone = RingtoneManager.getRingtone(mRingtonePreference.getContext(), 178d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd ringtoneUri); 179d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 180d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (tone != null) { 181d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd ringtoneName = tone.getTitle(mRingtonePreference.getContext()); 182d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 183d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 184d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 185d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mRingtonePreference.setSummary(ringtoneName); 186d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 187d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 188d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private void updateSmsEnabledPreferences() { 189d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (!OsUtil.isAtLeastKLP()) { 190d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceScreen().removePreference(mSmsDisabledPreference); 191d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceScreen().removePreference(mSmsEnabledPreference); 192d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } else { 193d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final String defaultSmsAppLabel = getString(R.string.default_sms_app, 194d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd PhoneUtils.getDefault().getDefaultSmsAppLabel()); 195d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd boolean isSmsEnabledBeforeState; 196d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd boolean isSmsEnabledCurrentState; 197d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (PhoneUtils.getDefault().isDefaultSmsApp()) { 198d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (getPreferenceScreen().findPreference(mSmsEnabledPrefKey) == null) { 199d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceScreen().addPreference(mSmsEnabledPreference); 200d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd isSmsEnabledBeforeState = false; 201d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } else { 202d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd isSmsEnabledBeforeState = true; 203d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 204d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd isSmsEnabledCurrentState = true; 205d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceScreen().removePreference(mSmsDisabledPreference); 206d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mSmsEnabledPreference.setSummary(defaultSmsAppLabel); 207d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } else { 208d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (getPreferenceScreen().findPreference(mSmsDisabledPrefKey) == null) { 209d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceScreen().addPreference(mSmsDisabledPreference); 210d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd isSmsEnabledBeforeState = true; 211d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } else { 212d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd isSmsEnabledBeforeState = false; 213d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 214d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd isSmsEnabledCurrentState = false; 215d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceScreen().removePreference(mSmsEnabledPreference); 216d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mSmsDisabledPreference.setSummary(defaultSmsAppLabel); 217d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 218d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd updateNotificationsPreferences(); 219d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 220d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mIsSmsPreferenceClicked = false; 221d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 222d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 223d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private void updateNotificationsPreferences() { 224d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final boolean canNotify = !OsUtil.isAtLeastKLP() 225d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd || PhoneUtils.getDefault().isDefaultSmsApp(); 226d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mNotificationsEnabledPreference.setEnabled(canNotify); 227d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 228d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 229d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 230d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public void onStart() { 231d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd super.onStart(); 232d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // We do this on start rather than on resume because the sound picker is in a 233d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd // separate activity. 234d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceScreen().getSharedPreferences() 235d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd .registerOnSharedPreferenceChangeListener(this); 236d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 237d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 238d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 239d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public void onResume() { 240d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd super.onResume(); 241d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd updateSmsEnabledPreferences(); 242d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd updateNotificationsPreferences(); 243d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 244d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 245d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 246d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, 247d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final String key) { 248d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (key.equals(mNotificationsEnabledPreferenceKey)) { 249d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd updateNotificationsPreferences(); 250d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } else if (key.equals(mRingtonePreferenceKey)) { 251d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd updateSoundSummary(sharedPreferences); 252d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 253d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 254d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 255d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 256d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public void onStop() { 257d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd super.onStop(); 258d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getPreferenceScreen().getSharedPreferences() 259d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd .unregisterOnSharedPreferenceChangeListener(this); 260d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 261d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 262d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd} 263