[MS-1379] Don't crash on huge metadata#1608
Conversation
There was a problem hiding this comment.
Pull request overview
Fixes a crash caused by oversized navigation arguments/saved-state bundles when caller apps send very large metadata in the launch Intent, by no longer passing Intent data through NavArgs and instead reading it directly from the hosting Activity.
Changes:
- Removed
requestAction/requestParamsnavigation arguments from the orchestration graph. - Stopped initializing the orchestration graph with fragment args in
OrchestratorActivity. - Updated
OrchestratorFragmentto readIntent.actionandIntent.extrasfrom the activity at runtime (and populate caller-package info there).
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| feature/orchestrator/src/main/res/navigation/graph_orchestration.xml | Removes orchestration fragment args so large metadata isn’t duplicated into fragment arguments. |
| feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/OrchestratorFragment.kt | Reads action/extras from Activity.intent and sets caller package info without using NavArgs. |
| feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/OrchestratorActivity.kt | Initializes nav graph without passing Intent data as fragment args. |
You can also share your feedback on Copilot code review. Take the survey.
feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/OrchestratorFragment.kt
Outdated
Show resolved
Hide resolved
edd362c to
3c15faf
Compare
alexandr-simprints
left a comment
There was a problem hiding this comment.
Don't see any problems with it at the first glance. What Intent Launcher version supports sending large amount of data to SID?
My local one :D But if it's going to be useful for more than a one-off, I can push the changes. |
…d multiple copies of arguments in associated VMs
3c15faf to
98a2337
Compare
|
| @Inject | ||
| lateinit var lastCallingPackageStore: LastCallingPackageStore | ||
|
|
||
| private val intentAction get() = requireActivity().intent.action.orEmpty() |
There was a problem hiding this comment.
Nit-pick: this syntax is a bit confusing and hides the type, I would prefer it a bit more explicit:
private val intentAction: String
get() = requireActivity().intent.action.orEmpty()
It could also be lazy, as there calling intent shouldn't change.



JIRA ticket
Will be released in: 2026.2.0
Root cause analysis (for bugfixes only)
First known affected version: at least since the last navigation refactoring
Notable changes
Testing guidance
Additional work checklist