From 0715676f22af7e4d00824ca0c7cd4cee31181439 Mon Sep 17 00:00:00 2001 From: Daniel Lerch <36048059+daniel-lerch@users.noreply.github.com> Date: Mon, 2 Feb 2026 15:15:27 +0100 Subject: [PATCH] Raise IAvaloniaActivity.Activated on new intent (#20564) Co-authored-by: Emmanuel Hansen --- .../Avalonia.Android/AvaloniaActivity.cs | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/src/Android/Avalonia.Android/AvaloniaActivity.cs b/src/Android/Avalonia.Android/AvaloniaActivity.cs index 6841f5ba92..60345e0a50 100644 --- a/src/Android/Avalonia.Android/AvaloniaActivity.cs +++ b/src/Android/Avalonia.Android/AvaloniaActivity.cs @@ -119,22 +119,14 @@ public class AvaloniaActivity : AppCompatActivity, IAvaloniaActivity activatableLifetime.CurrentIntendActivity = this; } - if (Intent?.Data is { } androidUri - && androidUri.IsAbsolute - && Uri.TryCreate(androidUri.ToString(), UriKind.Absolute, out var uri)) - { - if (uri.Scheme == Uri.UriSchemeFile) - { - if (AndroidStorageItem.CreateItem(this, androidUri) is { } item) - { - _onActivated?.Invoke(this, new FileActivatedEventArgs(new [] { item })); - } - } - else - { - _onActivated?.Invoke(this, new ProtocolActivatedEventArgs(uri)); - } - } + HandleIntent(Intent); + } + + protected override void OnNewIntent(Intent? intent) + { + base.OnNewIntent(intent); + + HandleIntent(intent); } protected override void OnStop() @@ -218,6 +210,26 @@ public class AvaloniaActivity : AppCompatActivity, IAvaloniaActivity _view = new AvaloniaView(this) { Content = initialContent }; } + private void HandleIntent(Intent? intent) + { + if (intent?.Data is { } androidUri + && androidUri.IsAbsolute + && Uri.TryCreate(androidUri.ToString(), UriKind.Absolute, out var uri)) + { + if (uri.Scheme == Uri.UriSchemeFile || uri.Scheme == "content") + { + if (AndroidStorageItem.CreateItem(this, androidUri) is { } item) + { + _onActivated?.Invoke(this, new FileActivatedEventArgs(new[] { item })); + } + } + else + { + _onActivated?.Invoke(this, new ProtocolActivatedEventArgs(uri)); + } + } + } + public void OnBackInvoked() { var eventArgs = new AndroidBackRequestedEventArgs();