Launch subscreens with the correct user

Test: atest
Fixes: 153556621
Change-Id: I5f3f0f408dc8e50db1762b1ce93f7748ea6332b0
diff --git a/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java b/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java
index 4403873..fa05299 100644
--- a/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java
+++ b/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java
@@ -24,6 +24,7 @@
 import android.content.Context;
 import android.os.AsyncTask;
 import android.os.Bundle;
+import android.os.UserHandle;
 import android.provider.Settings;
 
 import androidx.core.text.BidiFormatter;
@@ -183,12 +184,16 @@
             channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mAppRow.pkg);
             channelArgs.putString(Settings.EXTRA_CHANNEL_ID, channel.getId());
             channelArgs.putBoolean(ARG_FROM_SETTINGS, true);
-            channelPreference.setIntent(new SubSettingLauncher(mContext)
-                    .setDestination(ChannelNotificationSettings.class.getName())
-                    .setArguments(channelArgs)
-                    .setTitleRes(com.android.settings.R.string.notification_channel_title)
-                    .setSourceMetricsCategory(SettingsEnums.DND_APPS_BYPASSING)
-                    .toIntent());
+            channelPreference.setOnPreferenceClickListener(preference -> {
+                new SubSettingLauncher(mContext)
+                        .setDestination(ChannelNotificationSettings.class.getName())
+                        .setArguments(channelArgs)
+                        .setUserHandle(UserHandle.of(mAppRow.userId))
+                        .setTitleRes(com.android.settings.R.string.notification_channel_title)
+                        .setSourceMetricsCategory(SettingsEnums.DND_APPS_BYPASSING)
+                        .launch();
+                return true;
+            });
             mPreferenceCategory.addPreference(channelPreference);
         }
         mAllNotificationsToggle.setChecked(areAllChannelsBypassing());
diff --git a/src/com/android/settings/notification/app/ConversationListPreferenceController.java b/src/com/android/settings/notification/app/ConversationListPreferenceController.java
index 4d42483..b750a66 100644
--- a/src/com/android/settings/notification/app/ConversationListPreferenceController.java
+++ b/src/com/android/settings/notification/app/ConversationListPreferenceController.java
@@ -21,6 +21,7 @@
 import android.content.Intent;
 import android.content.pm.ShortcutInfo;
 import android.os.Bundle;
+import android.os.UserHandle;
 import android.provider.Settings;
 import android.service.notification.ConversationChannelWrapper;
 import android.text.TextUtils;
@@ -97,7 +98,10 @@
                 conversation.getPkg(), conversation.getUid(),
                 conversation.getNotificationChannel().isImportantConversation()));
         pref.setKey(conversation.getNotificationChannel().getId());
-        pref.setIntent(getIntent(conversation, pref.getTitle()));
+        pref.setOnPreferenceClickListener(preference -> {
+            getSubSettingLauncher(conversation, pref.getTitle()).launch();
+            return true;
+        });
 
         return pref;
     }
@@ -116,7 +120,8 @@
                 : conversation.getNotificationChannel().getName();
     }
 
-    Intent getIntent(ConversationChannelWrapper conversation, CharSequence title) {
+    SubSettingLauncher getSubSettingLauncher(ConversationChannelWrapper conversation,
+            CharSequence title) {
         Bundle channelArgs = new Bundle();
         channelArgs.putInt(AppInfoBase.ARG_PACKAGE_UID, conversation.getUid());
         channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, conversation.getPkg());
@@ -129,9 +134,9 @@
                 .setDestination(ChannelNotificationSettings.class.getName())
                 .setArguments(channelArgs)
                 .setExtras(channelArgs)
+                .setUserHandle(UserHandle.getUserHandleForUid(conversation.getUid()))
                 .setTitleText(title)
-                .setSourceMetricsCategory(SettingsEnums.NOTIFICATION_CONVERSATION_LIST_SETTINGS)
-                .toIntent();
+                .setSourceMetricsCategory(SettingsEnums.NOTIFICATION_CONVERSATION_LIST_SETTINGS);
     }
 
     protected Comparator<ConversationChannelWrapper> mConversationComparator =
diff --git a/src/com/android/settings/notification/zen/ZenModeAllBypassingAppsPreferenceController.java b/src/com/android/settings/notification/zen/ZenModeAllBypassingAppsPreferenceController.java
index 52c872c..fc034e5 100644
--- a/src/com/android/settings/notification/zen/ZenModeAllBypassingAppsPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenModeAllBypassingAppsPreferenceController.java
@@ -20,6 +20,7 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.os.Bundle;
+import android.os.UserHandle;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.core.text.BidiFormatter;
@@ -137,6 +138,7 @@
                         new SubSettingLauncher(mContext)
                                 .setDestination(AppChannelsBypassingDndSettings.class.getName())
                                 .setArguments(args)
+                                .setUserHandle(UserHandle.getUserHandleForUid(app.info.uid))
                                 .setResultListener(mHostFragment, 0)
                                 .setSourceMetricsCategory(
                                         SettingsEnums.NOTIFICATION_ZEN_MODE_OVERRIDING_APP)
diff --git a/tests/robotests/src/com/android/settings/notification/app/ConversationListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/ConversationListPreferenceControllerTest.java
index dc82adb..cbd9115 100644
--- a/tests/robotests/src/com/android/settings/notification/app/ConversationListPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/app/ConversationListPreferenceControllerTest.java
@@ -191,7 +191,7 @@
     }
 
     @Test
-    public void testGetIntent() {
+    public void testGetSubSettingLauncher() {
         ConversationChannelWrapper ccw = new ConversationChannelWrapper();
         NotificationChannel channel = new NotificationChannel("a", "child", 2);
         channel.setConversationId("parent", "convo id");
@@ -199,7 +199,7 @@
         ccw.setPkg("pkg");
         ccw.setUid(1);
         ccw.setParentChannelLabel("parent label");
-        Intent intent = mController.getIntent(ccw, "title");
+        Intent intent = mController.getSubSettingLauncher(ccw, "title").toIntent();
 
         Bundle extras = intent.getExtras();
         assertThat(extras.getString(AppInfoBase.ARG_PACKAGE_NAME)).isEqualTo(ccw.getPkg());