Skip to content

[Android] Use typed API 33 Parcelable overload - #37956

Merged
kubaflo merged 3 commits into
inflight/currentfrom
jfversluis-migrate-android-api33-todos
Aug 28, 2026
Merged

kubaflo merged 3 commits into
inflight/currentfrom
jfversluis-migrate-android-api33-todos

Conversation

@jfversluis

Copy link
Copy Markdown
Member

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

Summary

  • use the type-safe Bundle.GetParcelable overload for WebAuthenticatorIntermediateActivity on Android API 33 and newer
  • preserve the obsolete overload for Android API 21-32
  • document why ActivationState must retain generic Bundle.Get access to preserve arbitrary value stringification
  • remove obsolete and platform warning suppressions where the typed overload makes them unnecessary

Validation

  • dotnet build src\Essentials\src\Essentials.csproj -f net10.0-android36.0 --no-restore --nologo -v:minimal — 0 warnings, 0 errors
  • dotnet build src\Core\src\Core.csproj -f net10.0-android36.0 --no-restore --nologo -v:minimal — succeeded with only the existing Gradle Java 8 source/target warnings
  • pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1 -Project Essentials -Platform android -BuildOnly — succeeded and produced the signed APK

No Android emulator was available on the Windows validation host, so API 21-32 and API 33+ Activity recreation paths were not runtime-executed. The implementation follows the existing IntermediateActivity compatibility pattern.

PureWeen and others added 3 commits August 27, 2026 23:46
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Description

Updates the pinned `@microsoft/vally-cli` version used by skill
validation and live soak workflows from 0.12.0 to the latest stable
release, 0.14.0.

Also updates direct lint command examples and makes eval-spec comments
version-neutral where the described scoring behavior remains unchanged.

## Validation

- Installed Vally 0.14.0 through `.github/scripts/SetupVallyRuntime.sh`
- Strict-linted all 16 Vally evaluation specifications with Vally 0.14.0

Co-authored-by: PureWeen <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9e73594e-38bc-4937-80c8-cc054aa890d2
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Description

Removes the `IlcTreatWarningsAsErrors=false` workaround and its TODO
from the Apple NativeAOT simulator integration test.

The linked tracking issue, #19397, was closed after all template
trimming warnings were resolved. The dedicated
`AOTTemplateTest.PublishNativeAOT` suite also maintains an empty
expected-warning baseline for Apple NativeAOT builds, so the simulator
run should enforce the default ILC warning policy again.

## Validation

- The exact `AppleTemplateTests.RunOniOS_MauiNativeAOT` test compiled
and started on Windows, but Windows could not complete the Apple ILC
phase because the iOS-simulator NativeAOT runtime pack was unavailable
(`MSB3030` for `System.Runtime.InteropServices.RuntimeInformation.dll`).
- The Windows `AOTTemplateTest.PublishNativeAOT(... win-arm64)` proxy
passed, including its assertion that the complete NativeAOT binlog
warning list is empty.

Apple-specific ILC/codegen and simulator execution require the macOS CI
lanes and will be monitored on this draft PR.

Copilot-Session: 37f90cb9-27a1-41b7-b954-95bbbcc9e81e

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
Use the type-safe Bundle.GetParcelable overload on Android API 33 and newer while preserving the legacy path on older devices. Document why ActivationState must retain generic Bundle value access.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings August 28, 2026 14:15
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 37956

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 37956"

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
There may be pipelines that require an authorized user to comment /azp run to run.

@github-actions github-actions Bot added area-essentials Essentials: Device, Display, Connectivity, Secure Storage, Sensors, App Info platform/android labels Aug 28, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

Review tier: Lite
Findings: 1 Medium severity

New issues introduced by this change (1)
Severity Finding
Medium severity src/​Essentials/​src/​WebAuthenticator/​WebAuthenticatorIntermediateActivity.android.cs — OnCreate returns early when extras is null, but the activity will still proceed to OnResume,…
What changed in this PR

This PR updates Android-specific Bundle parcelable retrieval to use the API 33+ typed GetParcelable overload where available, while retaining legacy behavior for older Android versions, and clarifies why ActivationState intentionally keeps using the untyped Bundle.Get path.

Changes:

  • Updated WebAuthenticatorIntermediateActivity to use the API 33+ Bundle.GetParcelable(string, Class) overload behind an OperatingSystem.IsAndroidVersionAtLeast(33) guard.
  • Documented and refined the warning suppression around Bundle.Get usage in ActivationState to preserve existing stringification behavior for unknown Bundle value types.
File Description
src/​Essentials/​src/​WebAuthenticator/​WebAuthenticatorIntermediateActivity.android.cs Uses the API 33+ typed GetParcelable overload for safer parcelable retrieval on newer Android versions.
src/​Core/​src/​ActivationState.cs Adds rationale for keeping untyped Bundle.Get access and updates the warning suppression to the explicit obsolete warning ID.

@kubaflo
kubaflo changed the base branch from main to inflight/current August 28, 2026 16:08
@kubaflo
kubaflo merged commit 9712973 into inflight/current Aug 28, 2026
20 of 40 checks passed
@kubaflo
kubaflo deleted the jfversluis-migrate-android-api33-todos branch August 28, 2026 16:08
@github-actions github-actions Bot added this to the .NET 10 SR11 milestone Aug 28, 2026
kubaflo added a commit that referenced this pull request Sep 2, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 3, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 6, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 7, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 8, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 9, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 11, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 15, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 18, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 21, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 27, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
kubaflo added a commit that referenced this pull request Sep 27, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Summary

- use the type-safe `Bundle.GetParcelable` overload for
`WebAuthenticatorIntermediateActivity` on Android API 33 and newer
- preserve the obsolete overload for Android API 21-32
- document why `ActivationState` must retain generic `Bundle.Get` access
to preserve arbitrary value stringification
- remove obsolete and platform warning suppressions where the typed
overload makes them unnecessary

## Validation

- `dotnet build src\Essentials\src\Essentials.csproj -f
net10.0-android36.0 --no-restore --nologo -v:minimal` — 0 warnings, 0
errors
- `dotnet build src\Core\src\Core.csproj -f net10.0-android36.0
--no-restore --nologo -v:minimal` — succeeded with only the existing
Gradle Java 8 source/target warnings
- `pwsh .github\skills\run-device-tests\scripts\Run-DeviceTests.ps1
-Project Essentials -Platform android -BuildOnly` — succeeded and
produced the signed APK

No Android emulator was available on the Windows validation host, so API
21-32 and API 33+ Activity recreation paths were not runtime-executed.
The implementation follows the existing `IntermediateActivity`
compatibility pattern.

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 28, 2026

This branch was previously deployed

1 inactive deployment
copilot-pat-pool — eceda00a Deployed Aug 28, 2026 by jfversluis via conclusion #1615
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-essentials Essentials: Device, Display, Connectivity, Secure Storage, Sensors, App Info platform/android

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants