diff --git a/src/com/android/settings/spa/notification/AppNotificationRepository.kt b/src/com/android/settings/spa/notification/AppNotificationRepository.kt index f35d3089c0b..d0e700a9e34 100644 --- a/src/com/android/settings/spa/notification/AppNotificationRepository.kt +++ b/src/com/android/settings/spa/notification/AppNotificationRepository.kt @@ -27,6 +27,7 @@ import android.app.usage.UsageEvents import android.content.Context import android.content.pm.ApplicationInfo import android.os.Build +import android.os.IUserManager import android.os.RemoteException import android.os.ServiceManager import android.util.Log @@ -66,6 +67,9 @@ class AppNotificationRepository( private val notificationManager: INotificationManager = INotificationManager.Stub.asInterface( ServiceManager.getService(Context.NOTIFICATION_SERVICE) ), + private val userManager: IUserManager = IUserManager.Stub.asInterface( + ServiceManager.getService(Context.USER_SERVICE) + ), ) : IAppNotificationRepository { fun getAggregatedUsageEvents(userIdFlow: Flow): Flow> = userIdFlow.map { userId -> @@ -122,6 +126,15 @@ class AppNotificationRepository( } } + fun isUserUnlocked(user: Int): Boolean { + return try { + userManager.isUserUnlocked(user) + } catch (e: Exception) { + Log.w(TAG, "Error calling UserManager", e) + false + } + } + override fun getNotificationSummary(app: ApplicationInfo): String { if (!isEnabled(app)) return context.getString(R.string.notifications_disabled) val channelCount = getChannelCount(app) diff --git a/src/com/android/settings/spa/notification/AppNotificationsListModel.kt b/src/com/android/settings/spa/notification/AppNotificationsListModel.kt index 2f3de3a099e..9f949c43ba2 100644 --- a/src/com/android/settings/spa/notification/AppNotificationsListModel.kt +++ b/src/com/android/settings/spa/notification/AppNotificationsListModel.kt @@ -34,6 +34,7 @@ import com.android.settingslib.spa.widget.ui.SpinnerOption import com.android.settingslib.spaprivileged.model.app.AppEntry import com.android.settingslib.spaprivileged.model.app.AppListModel import com.android.settingslib.spaprivileged.model.app.AppRecord +import com.android.settingslib.spaprivileged.model.app.userId import com.android.settingslib.spaprivileged.template.app.AppListItemModel import com.android.settingslib.spaprivileged.template.app.AppListTwoTargetSwitchItem import com.android.settingslib.utils.StringUtil @@ -102,13 +103,21 @@ class AppNotificationsListModel( } } - override fun getSpinnerOptions(recordList: List): List = - SpinnerItem.entries.map { + override fun getSpinnerOptions(recordList: List): List { + val options = mutableListOf(SpinnerItem.AllApps, SpinnerItem.TurnedOff) + if (repository.isUserUnlocked(recordList[0].app.userId)) { + options.add(0, SpinnerItem.MostRecent) + options.add(1, SpinnerItem.MostFrequent) + } + + return options.map { SpinnerOption( - id = it.ordinal, - text = context.getString(it.stringResId), + id = it.ordinal, + text = context.getString(it.stringResId), ) } + } + private fun formatLastSent(lastSent: Long) = StringUtil.formatRelativeTime(