Notification on lockscreen settings: default unseen setting value

Make sure the default setting of
NOTIFICATION_SHOW_ONLY_UNSEEN_NOTIFICATIONS is off.

Fix: 391889319
Flag: com.android.server.notification.notification_lock_screen_settings
Test: manual
Change-Id: Ib7ad3e19ec2196829fef9410f5b306b3fa712d8c
This commit is contained in:
Yining Liu
2025-01-23 14:38:27 -08:00
parent 7e6cc163d9
commit d3a855b62f
2 changed files with 30 additions and 10 deletions

View File

@@ -16,6 +16,8 @@
package com.android.settings.notification; package com.android.settings.notification;
import static android.provider.Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.database.ContentObserver; import android.database.ContentObserver;
@@ -42,7 +44,8 @@ import com.android.settings.core.TogglePreferenceController;
public class LockScreenNotificationShowSeenController extends TogglePreferenceController public class LockScreenNotificationShowSeenController extends TogglePreferenceController
implements LifecycleEventObserver { implements LifecycleEventObserver {
private static final int UNSET = 0; // 0 is the default value for phones, we treat 0 as off as usage
private static final int UNSET_OFF = 0;
static final int ON = 1; static final int ON = 1;
static final int OFF = 2; static final int OFF = 2;
@Nullable private Preference mPreference; @Nullable private Preference mPreference;
@@ -96,15 +99,25 @@ public class LockScreenNotificationShowSeenController extends TogglePreferenceCo
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
if (!Flags.notificationMinimalism()) { if (Flags.notificationMinimalism()) {
return CONDITIONALLY_UNAVAILABLE;
}
if (!lockScreenShowNotification()) { if (!lockScreenShowNotification()) {
return CONDITIONALLY_UNAVAILABLE; return CONDITIONALLY_UNAVAILABLE;
} }
// We want to show the switch when the lock screen notification minimalism flag is on.
return AVAILABLE; return AVAILABLE;
} }
int setting = Settings.Secure.getInt(mContext.getContentResolver(),
LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, UNSET_OFF);
if (setting == UNSET_OFF) {
// hide the setting if the minimalism flag is off, and the device is phone
// UNSET_OFF is the default value for phones
return CONDITIONALLY_UNAVAILABLE;
} else {
return AVAILABLE;
}
}
/** /**
* @return Whether showing notifications on the lockscreen is enabled. * @return Whether showing notifications on the lockscreen is enabled.
*/ */
@@ -118,9 +131,14 @@ public class LockScreenNotificationShowSeenController extends TogglePreferenceCo
return lockScreenShowSeenNotifications(); return lockScreenShowSeenNotifications();
} }
/**
* @return whether to show seen notifications on lockscreen
*/
private boolean lockScreenShowSeenNotifications() { private boolean lockScreenShowSeenNotifications() {
// UNSET_OFF is the default value for phone, which is equivalent to off in effect
// (show seen notification)
return Settings.Secure.getInt(mContext.getContentResolver(), return Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, UNSET) == OFF; Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, UNSET_OFF) != ON;
} }
@Override @Override

View File

@@ -31,7 +31,9 @@ import com.android.settings.core.TogglePreferenceController;
public class ShowOnlyUnseenNotificationsOnLockscreenPreferenceController public class ShowOnlyUnseenNotificationsOnLockscreenPreferenceController
extends TogglePreferenceController { extends TogglePreferenceController {
private static final int UNSET = 0; // This is the default value for phones, before notification minimalism, this setting is
// unavailable to phones, we use this value to hide the toggle on phones.
private static final int UNSET_UNAVAILABLE = 0;
@VisibleForTesting @VisibleForTesting
static final int ON = 1; static final int ON = 1;
@VisibleForTesting @VisibleForTesting
@@ -46,7 +48,7 @@ public class ShowOnlyUnseenNotificationsOnLockscreenPreferenceController
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return Settings.Secure.getInt(mContext.getContentResolver(), return Settings.Secure.getInt(mContext.getContentResolver(),
LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, UNSET) == ON; LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, UNSET_UNAVAILABLE) == ON;
} }
@Override @Override
@@ -69,8 +71,8 @@ public class ShowOnlyUnseenNotificationsOnLockscreenPreferenceController
return AVAILABLE; return AVAILABLE;
} }
int setting = Settings.Secure.getInt(mContext.getContentResolver(), int setting = Settings.Secure.getInt(mContext.getContentResolver(),
LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, UNSET); LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, UNSET_UNAVAILABLE);
if (setting == UNSET) { if (setting == UNSET_UNAVAILABLE) {
return CONDITIONALLY_UNAVAILABLE; return CONDITIONALLY_UNAVAILABLE;
} else { } else {
return AVAILABLE; return AVAILABLE;