diff options
| author | 2025-01-23 00:17:14 -0800 | |
|---|---|---|
| committer | 2025-01-23 00:17:14 -0800 | |
| commit | 65887b7f99933b2eed03b22b9f3a618ea45ccea0 (patch) | |
| tree | 7246403e6c8b4feafec1d1834f7d8cdaa151fddb | |
| parent | 6f06a1142dc203a40e45612648efddbc88972272 (diff) | |
| parent | b542b3a87203a99880f3ed2150478d3d8cd9b824 (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.java | 14 |
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, |