Loading res/values/strings.xml +5 −0 Original line number Diff line number Diff line Loading @@ -6233,6 +6233,9 @@ <!-- [CHAR LIMIT=100] Notification Importance slider: unset importance level description --> <string name="notification_importance_none">Not set</string> <!-- [CHAR LIMIT=100] Notification Importance slider: unspecified importance level description --> <string name="notification_importance_unspecified">Let the app decide</string> <!-- [CHAR LIMIT=100] Notification Importance slider: blocked importance level description --> <string name="notification_importance_blocked">Never show notifications</string> Loading Loading @@ -7641,6 +7644,8 @@ <string name="notification_log_details_importance">importance</string> <!-- Notification log debug tool: header: notification importance explanation --> <string name="notification_log_details_explanation">explanation</string> <!-- Notification log debug tool: header: notification importance --> <string name="notification_log_details_badge">can show badge</string> <!-- Notification log debug tool: header: notification contentIntent field --> <string name="notification_log_details_content_intent">intent</string> <!-- Notification log debug tool: header: notification deleteIntent field --> res/xml/app_notification_settings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,15 @@ android:key="block" android:title="@string/app_notification_block_title" android:summary="@string/app_notification_block_summary" android:order="1" settings:useAdditionalSummary="true" settings:restrictedSwitchSummary="@string/enabled_by_admin" /> <!-- Show badge --> <com.android.settingslib.RestrictedSwitchPreference android:key="badge" android:title="@string/notification_badge_title" android:summary="@string/notification_badge_summary" android:order="2" settings:useAdditionalSummary="true" settings:restrictedSwitchSummary="@string/enabled_by_admin" /> Loading res/xml/channel_notification_settings.xml +29 −28 Original line number Diff line number Diff line Loading @@ -27,54 +27,55 @@ settings:useAdditionalSummary="true" settings:restrictedSwitchSummary="@string/enabled_by_admin" /> <!-- Importance --> <com.android.settings.notification.RestrictedDropDownPreference android:key="importance" android:title="@string/notification_importance_title" android:order="2"/> <!-- Default ringtone --> <com.android.settings.notification.DefaultNotificationTonePreference android:key="ringtone" android:title="@string/notification_ringtone_title" android:dialogTitle="@string/notification_ringtone_title" android:order="3" android:ringtoneType="notification" /> <!-- Vibration --> <com.android.settingslib.RestrictedSwitchPreference android:key="vibrate" android:title="@string/notification_vibrate_title" android:order="4" settings:useAdditionalSummary="true" /> <!-- Show badge --> <com.android.settingslib.RestrictedSwitchPreference android:key="badge" android:title="@string/notification_badge_title" android:summary="@string/notification_badge_summary" android:order="3" android:order="5" settings:useAdditionalSummary="true" settings:restrictedSwitchSummary="@string/enabled_by_admin" /> <!-- Importance --> <com.android.settings.notification.RestrictedDropDownPreference android:key="importance" android:title="@string/notification_importance_title" android:order="4"/> <!-- Lights --> <com.android.settingslib.RestrictedSwitchPreference android:key="lights" android:title="@string/notification_show_lights_title" android:order="6" settings:useAdditionalSummary="true" /> <!-- Visibility Override --> <com.android.settings.notification.RestrictedDropDownPreference android:key="visibility_override" android:title="@string/app_notification_visibility_override_title" android:order="5" /> android:order="7" /> <!-- Bypass DND --> <com.android.settingslib.RestrictedSwitchPreference android:key="bypass_dnd" android:title="@string/app_notification_override_dnd_title" android:summary="@string/app_notification_override_dnd_summary" android:order="6" settings:useAdditionalSummary="true" /> <!-- Lights --> <com.android.settingslib.RestrictedSwitchPreference android:key="lights" android:title="@string/notification_show_lights_title" android:order="7" settings:useAdditionalSummary="true" /> <!-- Vibration --> <com.android.settingslib.RestrictedSwitchPreference android:key="vibrate" android:title="@string/notification_vibrate_title" android:order="8" settings:useAdditionalSummary="true" /> <!-- Default ringtone --> <com.android.settings.notification.DefaultNotificationTonePreference android:key="ringtone" android:title="@string/notification_ringtone_title" android:dialogTitle="@string/notification_ringtone_title" android:order="9" android:ringtoneType="notification" /> </PreferenceScreen> src/com/android/settings/notification/AppNotificationSettings.java +25 −7 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.notification; import android.app.Activity; import android.app.Notification; import android.app.NotificationChannel; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; Loading @@ -35,11 +36,13 @@ import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.applications.AppHeaderController; import com.android.settings.applications.AppInfoBase; import com.android.settings.core.PreferenceController; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.notification.NotificationBackend.AppRow; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedPreference; import com.android.settingslib.RestrictedSwitchPreference; import com.android.settingslib.drawer.CategoryKey; import java.text.Collator; import java.util.Collections; Loading Loading @@ -88,10 +91,12 @@ public class AppNotificationSettings extends NotificationSettingsBase { addPreferencesFromResource(R.xml.app_notification_settings); mBlock = (RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BLOCK); mBadge = (RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BADGE); mChannels = (PreferenceCategory) findPreference(KEY_CHANNELS); if (mPkgInfo != null) { setupBlock(mAppRow.systemApp, mAppRow.banned); setupBlock(); setupBadge(); // load settings intent ArrayMap<String, AppRow> rows = new ArrayMap<String, AppRow>(); rows.put(mAppRow.pkg, mAppRow); Loading @@ -113,6 +118,7 @@ public class AppNotificationSettings extends NotificationSettingsBase { if (channel.isDeleted()) { channelPref.setTitle( getString(R.string.deleted_channel_name, channel.getName())); channelPref.setEnabled(false); } else { Bundle channelArgs = new Bundle(); channelArgs.putInt(AppInfoBase.ARG_PACKAGE_UID, mUid); Loading Loading @@ -153,16 +159,27 @@ public class AppNotificationSettings extends NotificationSettingsBase { finish(); return; } if (mBlock != null) { mBlock.setDisabledByAdmin(mSuspendedAppsAdmin); } private void setupBadge() { mBadge.setDisabledByAdmin(mSuspendedAppsAdmin); mBadge.setChecked(mAppRow.showBadge); mBadge.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean value = (Boolean) newValue; mBackend.setShowBadge(mPkg, mUid, value); return true; } }); } private void setupBlock(boolean notBlockable, boolean banned) { if (notBlockable) { private void setupBlock() { if (mAppRow.systemApp) { setVisible(mBlock, false); } else { mBlock.setChecked(banned); mBlock.setDisabledByAdmin(mSuspendedAppsAdmin); mBlock.setChecked(mAppRow.banned); mBlock.setOnPreferenceChangeListener( new Preference.OnPreferenceChangeListener() { @Override Loading @@ -180,6 +197,7 @@ public class AppNotificationSettings extends NotificationSettingsBase { private void updateDependents(boolean banned) { setVisible(mChannels, !(mChannelList.isEmpty() || banned)); setVisible(mBadge, !banned); } private List<ResolveInfo> queryNotificationConfigActivities() { Loading src/com/android/settings/notification/ChannelNotificationSettings.java +20 −11 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Intent; import android.content.pm.UserInfo; import android.net.Uri; Loading @@ -47,15 +48,17 @@ import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedSwitchPreference; import java.util.ArrayList; import java.util.List; public class ChannelNotificationSettings extends NotificationSettingsBase { private static final String TAG = "ChannelSettings"; protected static final String KEY_BYPASS_DND = "bypass_dnd"; protected static final String KEY_VISIBILITY_OVERRIDE = "visibility_override"; protected static final String KEY_IMPORTANCE = "importance"; protected static final String KEY_LIGHTS = "lights"; protected static final String KEY_VIBRATE = "vibrate"; protected static final String KEY_RINGTONE = "ringtone"; protected static final String KEY_BADGE = "badge"; protected RestrictedSwitchPreference mLights; protected RestrictedSwitchPreference mVibrate; Loading Loading @@ -114,8 +117,8 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { .getApplicationFeatureProvider(activity) .newAppHeaderController(this /* fragment */, null /* appHeader */) .setIcon(mAppRow.icon) .setLabel(mAppRow.label) .setSummary(mChannel.getName()) .setLabel(mChannel.getName()) .setSummary(mAppRow.label) .setPackageName(mAppRow.pkg) .setUid(mAppRow.uid) .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO, Loading @@ -138,8 +141,6 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { mImportance.setDisabledByAdmin(mSuspendedAppsAdmin); mPriority.setDisabledByAdmin(mSuspendedAppsAdmin); mVisibilityOverride.setDisabledByAdmin(mSuspendedAppsAdmin); mBlock.setDisabledByAdmin(mSuspendedAppsAdmin); mBadge.setDisabledByAdmin(mSuspendedAppsAdmin); } private void setupLights() { Loading Loading @@ -204,6 +205,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { } }); mBadge.setDisabledByAdmin(mSuspendedAppsAdmin); mBadge.setEnabled(mAppRow.showBadge); mBadge.setChecked(mChannel.canShowBadge()); mBadge.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override Loading @@ -218,15 +220,20 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { mImportance.setDisabledByAdmin(mSuspendedAppsAdmin); final int numImportances = IMPORTANCE_HIGH - IMPORTANCE_MIN + 1; String[] summaries = new String[numImportances]; String[] values = new String[numImportances]; List<String> summaries = new ArrayList<>(); List<String> values = new ArrayList<>();; for (int i = 0; i < numImportances; i++) { int importance = i + 1; summaries[i] = getSummary(importance); values[i] = String.valueOf(importance); summaries.add(getSummary(importance)); values.add(String.valueOf(importance)); } if (NotificationChannel.DEFAULT_CHANNEL_ID.equals(mChannel.getId())) { // Add option to reset to letting the app decide summaries.add(getSummary(NotificationManager.IMPORTANCE_UNSPECIFIED)); values.add(String.valueOf(NotificationManager.IMPORTANCE_UNSPECIFIED)); } mImportance.setEntryValues(values); mImportance.setEntries(summaries); mImportance.setEntryValues(values.toArray(new String[0])); mImportance.setEntries(summaries.toArray(new String[0])); mImportance.setValue(String.valueOf(mChannel.getImportance())); mImportance.setSummary("%s"); Loading @@ -245,6 +252,8 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { private String getSummary(int importance) { switch (importance) { case NotificationManager.IMPORTANCE_UNSPECIFIED: return getContext().getString(R.string.notification_importance_unspecified); case NotificationManager.IMPORTANCE_NONE: return getContext().getString(R.string.notification_importance_blocked); case NotificationManager.IMPORTANCE_MIN: Loading Loading
res/values/strings.xml +5 −0 Original line number Diff line number Diff line Loading @@ -6233,6 +6233,9 @@ <!-- [CHAR LIMIT=100] Notification Importance slider: unset importance level description --> <string name="notification_importance_none">Not set</string> <!-- [CHAR LIMIT=100] Notification Importance slider: unspecified importance level description --> <string name="notification_importance_unspecified">Let the app decide</string> <!-- [CHAR LIMIT=100] Notification Importance slider: blocked importance level description --> <string name="notification_importance_blocked">Never show notifications</string> Loading Loading @@ -7641,6 +7644,8 @@ <string name="notification_log_details_importance">importance</string> <!-- Notification log debug tool: header: notification importance explanation --> <string name="notification_log_details_explanation">explanation</string> <!-- Notification log debug tool: header: notification importance --> <string name="notification_log_details_badge">can show badge</string> <!-- Notification log debug tool: header: notification contentIntent field --> <string name="notification_log_details_content_intent">intent</string> <!-- Notification log debug tool: header: notification deleteIntent field -->
res/xml/app_notification_settings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,15 @@ android:key="block" android:title="@string/app_notification_block_title" android:summary="@string/app_notification_block_summary" android:order="1" settings:useAdditionalSummary="true" settings:restrictedSwitchSummary="@string/enabled_by_admin" /> <!-- Show badge --> <com.android.settingslib.RestrictedSwitchPreference android:key="badge" android:title="@string/notification_badge_title" android:summary="@string/notification_badge_summary" android:order="2" settings:useAdditionalSummary="true" settings:restrictedSwitchSummary="@string/enabled_by_admin" /> Loading
res/xml/channel_notification_settings.xml +29 −28 Original line number Diff line number Diff line Loading @@ -27,54 +27,55 @@ settings:useAdditionalSummary="true" settings:restrictedSwitchSummary="@string/enabled_by_admin" /> <!-- Importance --> <com.android.settings.notification.RestrictedDropDownPreference android:key="importance" android:title="@string/notification_importance_title" android:order="2"/> <!-- Default ringtone --> <com.android.settings.notification.DefaultNotificationTonePreference android:key="ringtone" android:title="@string/notification_ringtone_title" android:dialogTitle="@string/notification_ringtone_title" android:order="3" android:ringtoneType="notification" /> <!-- Vibration --> <com.android.settingslib.RestrictedSwitchPreference android:key="vibrate" android:title="@string/notification_vibrate_title" android:order="4" settings:useAdditionalSummary="true" /> <!-- Show badge --> <com.android.settingslib.RestrictedSwitchPreference android:key="badge" android:title="@string/notification_badge_title" android:summary="@string/notification_badge_summary" android:order="3" android:order="5" settings:useAdditionalSummary="true" settings:restrictedSwitchSummary="@string/enabled_by_admin" /> <!-- Importance --> <com.android.settings.notification.RestrictedDropDownPreference android:key="importance" android:title="@string/notification_importance_title" android:order="4"/> <!-- Lights --> <com.android.settingslib.RestrictedSwitchPreference android:key="lights" android:title="@string/notification_show_lights_title" android:order="6" settings:useAdditionalSummary="true" /> <!-- Visibility Override --> <com.android.settings.notification.RestrictedDropDownPreference android:key="visibility_override" android:title="@string/app_notification_visibility_override_title" android:order="5" /> android:order="7" /> <!-- Bypass DND --> <com.android.settingslib.RestrictedSwitchPreference android:key="bypass_dnd" android:title="@string/app_notification_override_dnd_title" android:summary="@string/app_notification_override_dnd_summary" android:order="6" settings:useAdditionalSummary="true" /> <!-- Lights --> <com.android.settingslib.RestrictedSwitchPreference android:key="lights" android:title="@string/notification_show_lights_title" android:order="7" settings:useAdditionalSummary="true" /> <!-- Vibration --> <com.android.settingslib.RestrictedSwitchPreference android:key="vibrate" android:title="@string/notification_vibrate_title" android:order="8" settings:useAdditionalSummary="true" /> <!-- Default ringtone --> <com.android.settings.notification.DefaultNotificationTonePreference android:key="ringtone" android:title="@string/notification_ringtone_title" android:dialogTitle="@string/notification_ringtone_title" android:order="9" android:ringtoneType="notification" /> </PreferenceScreen>
src/com/android/settings/notification/AppNotificationSettings.java +25 −7 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.notification; import android.app.Activity; import android.app.Notification; import android.app.NotificationChannel; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; Loading @@ -35,11 +36,13 @@ import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.applications.AppHeaderController; import com.android.settings.applications.AppInfoBase; import com.android.settings.core.PreferenceController; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.notification.NotificationBackend.AppRow; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedPreference; import com.android.settingslib.RestrictedSwitchPreference; import com.android.settingslib.drawer.CategoryKey; import java.text.Collator; import java.util.Collections; Loading Loading @@ -88,10 +91,12 @@ public class AppNotificationSettings extends NotificationSettingsBase { addPreferencesFromResource(R.xml.app_notification_settings); mBlock = (RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BLOCK); mBadge = (RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BADGE); mChannels = (PreferenceCategory) findPreference(KEY_CHANNELS); if (mPkgInfo != null) { setupBlock(mAppRow.systemApp, mAppRow.banned); setupBlock(); setupBadge(); // load settings intent ArrayMap<String, AppRow> rows = new ArrayMap<String, AppRow>(); rows.put(mAppRow.pkg, mAppRow); Loading @@ -113,6 +118,7 @@ public class AppNotificationSettings extends NotificationSettingsBase { if (channel.isDeleted()) { channelPref.setTitle( getString(R.string.deleted_channel_name, channel.getName())); channelPref.setEnabled(false); } else { Bundle channelArgs = new Bundle(); channelArgs.putInt(AppInfoBase.ARG_PACKAGE_UID, mUid); Loading Loading @@ -153,16 +159,27 @@ public class AppNotificationSettings extends NotificationSettingsBase { finish(); return; } if (mBlock != null) { mBlock.setDisabledByAdmin(mSuspendedAppsAdmin); } private void setupBadge() { mBadge.setDisabledByAdmin(mSuspendedAppsAdmin); mBadge.setChecked(mAppRow.showBadge); mBadge.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean value = (Boolean) newValue; mBackend.setShowBadge(mPkg, mUid, value); return true; } }); } private void setupBlock(boolean notBlockable, boolean banned) { if (notBlockable) { private void setupBlock() { if (mAppRow.systemApp) { setVisible(mBlock, false); } else { mBlock.setChecked(banned); mBlock.setDisabledByAdmin(mSuspendedAppsAdmin); mBlock.setChecked(mAppRow.banned); mBlock.setOnPreferenceChangeListener( new Preference.OnPreferenceChangeListener() { @Override Loading @@ -180,6 +197,7 @@ public class AppNotificationSettings extends NotificationSettingsBase { private void updateDependents(boolean banned) { setVisible(mChannels, !(mChannelList.isEmpty() || banned)); setVisible(mBadge, !banned); } private List<ResolveInfo> queryNotificationConfigActivities() { Loading
src/com/android/settings/notification/ChannelNotificationSettings.java +20 −11 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Intent; import android.content.pm.UserInfo; import android.net.Uri; Loading @@ -47,15 +48,17 @@ import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedSwitchPreference; import java.util.ArrayList; import java.util.List; public class ChannelNotificationSettings extends NotificationSettingsBase { private static final String TAG = "ChannelSettings"; protected static final String KEY_BYPASS_DND = "bypass_dnd"; protected static final String KEY_VISIBILITY_OVERRIDE = "visibility_override"; protected static final String KEY_IMPORTANCE = "importance"; protected static final String KEY_LIGHTS = "lights"; protected static final String KEY_VIBRATE = "vibrate"; protected static final String KEY_RINGTONE = "ringtone"; protected static final String KEY_BADGE = "badge"; protected RestrictedSwitchPreference mLights; protected RestrictedSwitchPreference mVibrate; Loading Loading @@ -114,8 +117,8 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { .getApplicationFeatureProvider(activity) .newAppHeaderController(this /* fragment */, null /* appHeader */) .setIcon(mAppRow.icon) .setLabel(mAppRow.label) .setSummary(mChannel.getName()) .setLabel(mChannel.getName()) .setSummary(mAppRow.label) .setPackageName(mAppRow.pkg) .setUid(mAppRow.uid) .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO, Loading @@ -138,8 +141,6 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { mImportance.setDisabledByAdmin(mSuspendedAppsAdmin); mPriority.setDisabledByAdmin(mSuspendedAppsAdmin); mVisibilityOverride.setDisabledByAdmin(mSuspendedAppsAdmin); mBlock.setDisabledByAdmin(mSuspendedAppsAdmin); mBadge.setDisabledByAdmin(mSuspendedAppsAdmin); } private void setupLights() { Loading Loading @@ -204,6 +205,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { } }); mBadge.setDisabledByAdmin(mSuspendedAppsAdmin); mBadge.setEnabled(mAppRow.showBadge); mBadge.setChecked(mChannel.canShowBadge()); mBadge.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override Loading @@ -218,15 +220,20 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { mImportance.setDisabledByAdmin(mSuspendedAppsAdmin); final int numImportances = IMPORTANCE_HIGH - IMPORTANCE_MIN + 1; String[] summaries = new String[numImportances]; String[] values = new String[numImportances]; List<String> summaries = new ArrayList<>(); List<String> values = new ArrayList<>();; for (int i = 0; i < numImportances; i++) { int importance = i + 1; summaries[i] = getSummary(importance); values[i] = String.valueOf(importance); summaries.add(getSummary(importance)); values.add(String.valueOf(importance)); } if (NotificationChannel.DEFAULT_CHANNEL_ID.equals(mChannel.getId())) { // Add option to reset to letting the app decide summaries.add(getSummary(NotificationManager.IMPORTANCE_UNSPECIFIED)); values.add(String.valueOf(NotificationManager.IMPORTANCE_UNSPECIFIED)); } mImportance.setEntryValues(values); mImportance.setEntries(summaries); mImportance.setEntryValues(values.toArray(new String[0])); mImportance.setEntries(summaries.toArray(new String[0])); mImportance.setValue(String.valueOf(mChannel.getImportance())); mImportance.setSummary("%s"); Loading @@ -245,6 +252,8 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { private String getSummary(int importance) { switch (importance) { case NotificationManager.IMPORTANCE_UNSPECIFIED: return getContext().getString(R.string.notification_importance_unspecified); case NotificationManager.IMPORTANCE_NONE: return getContext().getString(R.string.notification_importance_blocked); case NotificationManager.IMPORTANCE_MIN: Loading