Skip to content

Commit fed72b2

Browse files
Winson ChungOhMyVenyx
authored andcommitted
Ensure that only SysUI can override pending intent launch flags
- Originally added in ag/5139951, this method ensured that activities launched from widgets are always started in a new task (if the activity is launched in the home task, the task is not brough forward with the recents transition). We can restrict this to only recents callers since this only applies to 1p launchers in gesture nav (both the gesture with 3p launchers and button nav in general will always start the home intent directly, which makes adding the NEW_TASK flag unnecessary). Bug: 243794108 Test: Ensure that the original bug b/112508020 still works (with the test app in the bug, swipe up still works after launching an activity from the widget, and fails without applying the override flags) Change-Id: Id53c6a2aa6da5933d488ca06a0bfc4ef89a4c343 (cherry picked from commit c4d3106) Merged-In: Id53c6a2aa6da5933d488ca06a0bfc4ef89a4c343
1 parent 71f251b commit fed72b2

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

services/core/java/com/android/server/am/PendingIntentRecord.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,11 +350,16 @@ public int sendInner(int code, Intent intent, String resolvedType, IBinder allow
350350
resolvedType = key.requestResolvedType;
351351
}
352352

353-
// Apply any launch flags from the ActivityOptions. This is to ensure that the caller
354-
// can specify a consistent launch mode even if the PendingIntent is immutable
353+
// Apply any launch flags from the ActivityOptions. This is used only by SystemUI
354+
// to ensure that we can launch the pending intent with a consistent launch mode even
355+
// if the provided PendingIntent is immutable (ie. to force an activity to launch into
356+
// a new task, or to launch multiple instances if supported by the app)
355357
final ActivityOptions opts = ActivityOptions.fromBundle(options);
356358
if (opts != null) {
357-
finalIntent.addFlags(opts.getPendingIntentLaunchFlags());
359+
// TODO(b/254490217): Move this check into SafeActivityOptions
360+
if (controller.mAtmInternal.isCallerRecents(Binder.getCallingUid())) {
361+
finalIntent.addFlags(opts.getPendingIntentLaunchFlags());
362+
}
358363
}
359364

360365
// Extract options before clearing calling identity

0 commit comments

Comments
 (0)