summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jiaming Liu <jiamingliu@google.com> 2025-01-23 00:17:14 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-01-23 00:17:14 -0800
commit65887b7f99933b2eed03b22b9f3a618ea45ccea0 (patch)
tree7246403e6c8b4feafec1d1834f7d8cdaa151fddb
parent6f06a1142dc203a40e45612648efddbc88972272 (diff)
parentb542b3a87203a99880f3ed2150478d3d8cd9b824 (diff)
Merge "[AE] Prevent crash when launching activity's task id is invalid" into main
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
index d0d1721115cb..1bcb0bb91515 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
@@ -18,6 +18,7 @@ package androidx.window.extensions.embedding;
import static android.app.ActivityManager.START_SUCCESS;
import static android.app.ActivityOptions.KEY_LAUNCH_TASK_FRAGMENT_TOKEN;
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.view.Display.DEFAULT_DISPLAY;
@@ -3154,15 +3155,22 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
final WindowContainerTransaction wct = transactionRecord.getTransaction();
final TaskFragmentContainer launchedInTaskFragment;
if (launchingActivity != null) {
- final int taskId = getTaskId(launchingActivity);
final String overlayTag = options.getString(KEY_OVERLAY_TAG);
if (Flags.activityEmbeddingOverlayPresentationFlag()
&& overlayTag != null) {
launchedInTaskFragment = createOrUpdateOverlayTaskFragmentIfNeeded(wct,
options, intent, launchingActivity);
} else {
- launchedInTaskFragment = resolveStartActivityIntent(wct, taskId, intent,
- launchingActivity);
+ final int taskId = getTaskId(launchingActivity);
+ if (taskId != INVALID_TASK_ID) {
+ launchedInTaskFragment = resolveStartActivityIntent(wct, taskId, intent,
+ launchingActivity);
+ } else {
+ // We cannot get a valid task id of launchingActivity so we fall back to
+ // treat it as a non-Activity context.
+ launchedInTaskFragment =
+ resolveStartActivityIntentFromNonActivityContext(wct, intent);
+ }
}
} else {
launchedInTaskFragment = resolveStartActivityIntentFromNonActivityContext(wct,