From 3b7936fb43f881de248458f720920399458408ee Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Wed, 2 Dec 2015 09:40:36 -0500 Subject: [PATCH] Hide cell broadcast settings link if needed. Bug: 25939664 Change-Id: Iccf7d17267aecadff0d18f9fb4f464f3597e4c3e --- .../android/settings/WirelessSettings.java | 38 ---------------- .../settings/notification/SoundSettings.java | 44 ++++++++++++++++++- .../search/SearchIndexableResources.java | 2 +- 3 files changed, 44 insertions(+), 40 deletions(-) diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java index 55a2c326d00..27ab6a27efe 100644 --- a/src/com/android/settings/WirelessSettings.java +++ b/src/com/android/settings/WirelessSettings.java @@ -68,7 +68,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde private static final String KEY_PROXY_SETTINGS = "proxy_settings"; private static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings"; private static final String KEY_MANAGE_MOBILE_PLAN = "manage_mobile_plan"; - private static final String KEY_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings"; private static final String KEY_WFC_SETTINGS = "wifi_calling_settings"; public static final String EXIT_ECM_RESULT = "exit_ecm_result"; @@ -327,26 +326,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde p.setEnabled(!TetherSettings .isProvisioningNeededButUnavailable(getActivity())); } - - // Enable link to CMAS app settings depending on the value in config.xml. - boolean isCellBroadcastAppLinkEnabled = this.getResources().getBoolean( - com.android.internal.R.bool.config_cellBroadcastAppLinks); - try { - if (isCellBroadcastAppLinkEnabled) { - if (mPm.getApplicationEnabledSetting("com.android.cellbroadcastreceiver") - == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { - isCellBroadcastAppLinkEnabled = false; // CMAS app disabled - } - } - } catch (IllegalArgumentException ignored) { - isCellBroadcastAppLinkEnabled = false; // CMAS app not installed - } - if (!isAdmin || !isCellBroadcastAppLinkEnabled - || mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS)) { - PreferenceScreen root = getPreferenceScreen(); - Preference ps = findPreference(KEY_CELL_BROADCAST_SETTINGS); - if (ps != null) root.removePreference(ps); - } } @Override @@ -478,23 +457,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde result.add(KEY_TETHER_SETTINGS); } - // Enable link to CMAS app settings depending on the value in config.xml. - boolean isCellBroadcastAppLinkEnabled = context.getResources().getBoolean( - com.android.internal.R.bool.config_cellBroadcastAppLinks); - try { - if (isCellBroadcastAppLinkEnabled) { - if (pm.getApplicationEnabledSetting("com.android.cellbroadcastreceiver") - == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { - isCellBroadcastAppLinkEnabled = false; // CMAS app disabled - } - } - } catch (IllegalArgumentException ignored) { - isCellBroadcastAppLinkEnabled = false; // CMAS app not installed - } - if (isSecondaryUser || !isCellBroadcastAppLinkEnabled) { - result.add(KEY_CELL_BROADCAST_SETTINGS); - } - return result; } }; diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java index 9e2752829d0..11517ea885e 100644 --- a/src/com/android/settings/notification/SoundSettings.java +++ b/src/com/android/settings/notification/SoundSettings.java @@ -76,6 +76,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab private static final String KEY_VIBRATE_WHEN_RINGING = "vibrate_when_ringing"; private static final String KEY_WIFI_DISPLAY = "wifi_display"; private static final String KEY_ZEN_MODE = "zen_mode"; + private static final String KEY_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings"; private static final String[] RESTRICTED_KEYS = { KEY_MEDIA_VOLUME, @@ -105,6 +106,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab private ComponentName mSuppressor; private int mRingerMode = -1; + private PackageManager mPm; private UserManager mUserManager; private RingtonePreference mRequestPreference; @@ -117,6 +119,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = getActivity(); + mPm = getPackageManager(); mUserManager = UserManager.get(getContext()); mVoiceCapable = Utils.isVoiceCapable(mContext); @@ -143,6 +146,24 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab com.android.internal.R.drawable.ic_audio_ring_notif_mute); removePreference(KEY_RING_VOLUME); } + + // Enable link to CMAS app settings depending on the value in config.xml. + boolean isCellBroadcastAppLinkEnabled = this.getResources().getBoolean( + com.android.internal.R.bool.config_cellBroadcastAppLinks); + try { + if (isCellBroadcastAppLinkEnabled) { + if (mPm.getApplicationEnabledSetting("com.android.cellbroadcastreceiver") + == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { + isCellBroadcastAppLinkEnabled = false; // CMAS app disabled + } + } + } catch (IllegalArgumentException ignored) { + isCellBroadcastAppLinkEnabled = false; // CMAS app not installed + } + if (!mUserManager.isAdminUser() || !isCellBroadcastAppLinkEnabled + || mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS)) { + removePreference(KEY_CELL_BROADCAST_SETTINGS); + } initRingtones(); initVibrateWhenRinging(); updateRingerMode(); @@ -545,7 +566,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab public List getXmlResourcesToIndex( Context context, boolean enabled) { final SearchIndexableResource sir = new SearchIndexableResource(context); - sir.xmlResId = R.xml.configure_notification_settings; + sir.xmlResId = R.xml.sound_settings; return Arrays.asList(sir); } @@ -559,6 +580,27 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab rt.add(KEY_WIFI_DISPLAY); rt.add(KEY_VIBRATE_WHEN_RINGING); } + + final PackageManager pm = context.getPackageManager(); + final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE); + + // Enable link to CMAS app settings depending on the value in config.xml. + boolean isCellBroadcastAppLinkEnabled = context.getResources().getBoolean( + com.android.internal.R.bool.config_cellBroadcastAppLinks); + try { + if (isCellBroadcastAppLinkEnabled) { + if (pm.getApplicationEnabledSetting("com.android.cellbroadcastreceiver") + == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { + isCellBroadcastAppLinkEnabled = false; // CMAS app disabled + } + } + } catch (IllegalArgumentException ignored) { + isCellBroadcastAppLinkEnabled = false; // CMAS app not installed + } + if (!um.isAdminUser() || !isCellBroadcastAppLinkEnabled) { + rt.add(KEY_CELL_BROADCAST_SETTINGS); + } + return rt; } }; diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java index 376b2ebfb39..6d6ca088acf 100644 --- a/src/com/android/settings/search/SearchIndexableResources.java +++ b/src/com/android/settings/search/SearchIndexableResources.java @@ -155,7 +155,7 @@ public final class SearchIndexableResources { sResMap.put(SoundSettings.class.getName(), new SearchIndexableResource( Ranking.getRankForClassName(SoundSettings.class.getName()), - R.xml.sound_settings, + NO_DATA_RES_ID, SoundSettings.class.getName(), R.drawable.ic_settings_sound));