Fix some issues with notif blocking in settings

- Fix cast cast exception
- Make sure unblocking a notification channel also actually
unblocks it

Test: make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.notification"
Fixes: 177968301
Fixes: 177907827
Change-Id: Ibad56e102e167bcf004fbd0f9873cc29834a30c1
This commit is contained in:
Julia Reynolds
2021-01-21 11:13:57 -05:00
parent 02c9b032cd
commit c1ca4b81c1
3 changed files with 7 additions and 5 deletions

View File

@@ -25,10 +25,9 @@
android:order="1" android:order="1"
android:layout="@layout/settings_entity_header" /> android:layout="@layout/settings_entity_header" />
<com.android.settingslib.widget.LayoutPreference <com.android.settings.widget.SettingsMainSwitchPreference
android:key="block" android:key="block"
android:order="2" android:order="2" />
android:layout="@layout/styled_switch_bar" />
<!-- Importance toggle --> <!-- Importance toggle -->
<com.android.settingslib.RestrictedSwitchPreference <com.android.settingslib.RestrictedSwitchPreference

View File

@@ -16,6 +16,7 @@
package com.android.settings.notification.app; package com.android.settings.notification.app;
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.app.NotificationManager.IMPORTANCE_NONE; import static android.app.NotificationManager.IMPORTANCE_NONE;
import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED; import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
@@ -107,7 +108,7 @@ public class BlockPreferenceController extends NotificationPreferenceController
? IMPORTANCE_NONE ? IMPORTANCE_NONE
: isDefaultChannel() : isDefaultChannel()
? IMPORTANCE_UNSPECIFIED ? IMPORTANCE_UNSPECIFIED
: mChannel.getOriginalImportance(); : Math.max(mChannel.getOriginalImportance(), IMPORTANCE_LOW);
mChannel.setImportance(importance); mChannel.setImportance(importance);
saveChannel(); saveChannel();
} }

View File

@@ -339,7 +339,9 @@ public class ChannelListPreferenceController extends NotificationPreferenceContr
channelPref.setOnPreferenceChangeListener( channelPref.setOnPreferenceChangeListener(
(preference, o) -> { (preference, o) -> {
boolean value = (Boolean) o; boolean value = (Boolean) o;
int importance = value ? channel.getOriginalImportance() : IMPORTANCE_NONE; int importance = value
? Math.max(channel.getOriginalImportance(), IMPORTANCE_LOW)
: IMPORTANCE_NONE;
channel.setImportance(importance); channel.setImportance(importance);
channel.lockFields(NotificationChannel.USER_LOCKED_IMPORTANCE); channel.lockFields(NotificationChannel.USER_LOCKED_IMPORTANCE);
PrimarySwitchPreference channelPref1 = (PrimarySwitchPreference) preference; PrimarySwitchPreference channelPref1 = (PrimarySwitchPreference) preference;