Current behavior
On Android, when the UnoSKCanvasView receives an accessibility focus change, a MissingMethodException is thrown:
System.MissingMethodException: Method not found: void AndroidX.Core.View.Accessibility.AccessibilityNodeInfoCompat.set_Checked(bool)
at void UnoSKCanvasView.OnFocusChanged(bool gainFocus, FocusSearchDirection direction, Rect previouslyFocusedRect)
at void ExploreByTouchHelper.OnFocusChanged(bool, int, Rect)
at void ExploreByTouchHelper.n_OnPopulateNodeForVirtualView_ILandroidx_core_view_accessibility_AccessibilityNodeInfoCompat_(IntPtr, IntPtr, int, IntPtr)
The error is caught and logged (non-crashing), but accessibility for toggle/check state is broken.
Expected behavior
No exception. The accessibility node should correctly report checked state.
How to reproduce
- Use Uno Platform with SkiaRenderer on Android
- Have a dependency that pulls in
Xamarin.AndroidX.Core >= 1.17.0 (e.g., Sentry >= 6.2.0 with Sentry.Bindings.Android for net10.0-android36.0)
- Navigate to any page and trigger accessibility focus on the canvas view
Root cause
In UnoExploreByTouchHelper.cs line ~211, the code uses:
node.Checked = peer is IToggleProvider toggleProvider && toggleProvider.ToggleState == On;
Xamarin.AndroidX.Core 1.17.0 renamed the Checked property to IsChecked on AccessibilityNodeInfoCompat, so set_Checked(bool) no longer exists at runtime.
Suggested fix
Replace node.Checked with node.IsChecked in UnoExploreByTouchHelper.cs.
Environment
- Uno.Sdk: 6.5.31 (also affects 6.6.0-dev.180, file unchanged since July 2025)
- .NET: 10.0
- Target:
net10.0-android36.0
- Xamarin.AndroidX.Core: 1.17.0 (pulled by Sentry.Bindings.Android 6.3.0)
- Device: Samsung SM-S947B, Android 16 (API 36)
- Affected users: 9 (18 occurrences in Sentry)
Current behavior
On Android, when the
UnoSKCanvasViewreceives an accessibility focus change, aMissingMethodExceptionis thrown:The error is caught and logged (non-crashing), but accessibility for toggle/check state is broken.
Expected behavior
No exception. The accessibility node should correctly report checked state.
How to reproduce
Xamarin.AndroidX.Core >= 1.17.0(e.g.,Sentry >= 6.2.0withSentry.Bindings.Androidfornet10.0-android36.0)Root cause
In
UnoExploreByTouchHelper.csline ~211, the code uses:Xamarin.AndroidX.Core 1.17.0renamed theCheckedproperty toIsCheckedonAccessibilityNodeInfoCompat, soset_Checked(bool)no longer exists at runtime.Suggested fix
Replace
node.Checkedwithnode.IsCheckedinUnoExploreByTouchHelper.cs.Environment
net10.0-android36.0