diff options
4 files changed, 31 insertions, 10 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 68d8d82aeb0c..a4212b53c905 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -14551,6 +14551,16 @@ public final class Settings { public static final String SHOW_PEOPLE_SPACE = "show_people_space"; /** + * Which types of conversations to show in People Space. + * Values are: + * 0: All conversations (default) + * 1: Priority conversations only + * @hide + */ + public static final String PEOPLE_SPACE_CONVERSATION_TYPE = + "people_space_conversation_type"; + + /** * Whether to show new lockscreen & AOD UI. * Values are: * 0: Disabled (default) diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index 9b0df9625df7..8aad467a2440 100644 --- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -408,6 +408,7 @@ public class SettingsBackupTest { Settings.Global.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT, Settings.Global.PDP_WATCHDOG_POLL_INTERVAL_MS, Settings.Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT, + Settings.Global.PEOPLE_SPACE_CONVERSATION_TYPE, Settings.Global.POLICY_CONTROL, Settings.Global.POWER_BUTTON_SUPPRESSION_DELAY_AFTER_GESTURE_WAKE, Settings.Global.POWER_MANAGER_CONSTANTS, diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java index eeb93bb7d766..bdaeb137e368 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java @@ -18,6 +18,7 @@ package com.android.systemui.people; import android.app.Activity; import android.app.INotificationManager; +import android.app.people.ConversationChannel; import android.app.people.IPeopleManager; import android.content.Context; import android.content.pm.LauncherApps; @@ -29,6 +30,7 @@ import android.icu.util.MeasureUnit; import android.os.Bundle; import android.os.ServiceManager; import android.os.UserHandle; +import android.provider.Settings; import android.service.notification.ConversationChannelWrapper; import android.util.Log; import android.view.ViewGroup; @@ -52,7 +54,6 @@ public class PeopleSpaceActivity extends Activity { private INotificationManager mNotificationManager; private PackageManager mPackageManager; private LauncherApps mLauncherApps; - private List<ConversationChannelWrapper> mConversations; private Context mContext; @Override @@ -77,15 +78,25 @@ public class PeopleSpaceActivity extends Activity { */ private void setTileViewsWithPriorityConversations() { try { + boolean showAllConversations = Settings.Global.getInt(mContext.getContentResolver(), + Settings.Global.PEOPLE_SPACE_CONVERSATION_TYPE) == 0; List<ConversationChannelWrapper> conversations = mNotificationManager.getConversations( - true /* priority only */).getList(); - mConversations = conversations.stream().filter( - c -> shouldKeepConversation(c)).collect(Collectors.toList()); - for (ConversationChannelWrapper conversation : mConversations) { + !showAllConversations /* priority only */).getList(); + List<ShortcutInfo> shortcutInfos = conversations.stream().filter( + c -> shouldKeepConversation(c)).map(c -> c.getShortcutInfo()).collect( + Collectors.toList()); + if (showAllConversations) { + List<ConversationChannel> recentConversations = + mPeopleManager.getRecentConversations().getList(); + List<ShortcutInfo> recentShortcuts = recentConversations.stream().map( + c -> c.getShortcutInfo()).collect(Collectors.toList()); + shortcutInfos.addAll(recentShortcuts); + } + for (ShortcutInfo conversation : shortcutInfos) { PeopleSpaceTileView tileView = new PeopleSpaceTileView(mContext, mPeopleSpaceLayout, - conversation.getShortcutInfo().getId()); + conversation.getId()); setTileView(tileView, conversation); } } catch (Exception e) { @@ -95,11 +106,10 @@ public class PeopleSpaceActivity extends Activity { /** Sets {@code tileView} with the data in {@code conversation}. */ private void setTileView(PeopleSpaceTileView tileView, - ConversationChannelWrapper conversation) { + ShortcutInfo shortcutInfo) { try { - ShortcutInfo shortcutInfo = conversation.getShortcutInfo(); int userId = UserHandle.getUserHandleForUid( - conversation.getUid()).getIdentifier(); + shortcutInfo.getUserId()).getIdentifier(); String pkg = shortcutInfo.getPackage(); long lastInteraction = mPeopleManager.getLastInteraction( diff --git a/services/people/java/com/android/server/people/PeopleService.java b/services/people/java/com/android/server/people/PeopleService.java index 91cb481a3b23..7c3b7a67178e 100644 --- a/services/people/java/com/android/server/people/PeopleService.java +++ b/services/people/java/com/android/server/people/PeopleService.java @@ -122,7 +122,7 @@ public class PeopleService extends SystemService { @Override public ParceledListSlice<ConversationChannel> getRecentConversations() { - enforceSystemOrRoot("get recent conversations"); + enforceSystemRootOrSystemUI(getContext(), "get recent conversations"); return new ParceledListSlice<>( mDataManager.getRecentConversations( Binder.getCallingUserHandle().getIdentifier())); |