Browse Source

Raise IAvaloniaActivity.Activated on new intent (#20564)

Co-authored-by: Emmanuel Hansen <emmausssss@gmail.com>
release/latest
Daniel Lerch 2 months ago
committed by Julien Lebosquain
parent
commit
b12e371a60
No known key found for this signature in database GPG Key ID: 1833CAD10ACC46FD
  1. 40
      src/Android/Avalonia.Android/AvaloniaActivity.cs

40
src/Android/Avalonia.Android/AvaloniaActivity.cs

@ -124,22 +124,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 }));
HandleIntent(Intent);
}
}
else
protected override void OnNewIntent(Intent? intent)
{
_onActivated?.Invoke(this, new ProtocolActivatedEventArgs(uri));
}
}
base.OnNewIntent(intent);
HandleIntent(intent);
}
protected override void OnStop()
@ -224,6 +216,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();

Loading…
Cancel
Save