Skip to content

Commit f4f54df

Browse files
authored
Merge pull request #22319 from unoplatform/unobot/release/stable/6.4/bp22301
fix android deeplink activation (backport #22301)
2 parents af9aa28 + 839f63c commit f4f54df

File tree

4 files changed

+33
-12
lines changed

4 files changed

+33
-12
lines changed

src/Uno.UI/UI/Xaml/Application.skia.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,15 @@ public partial class Application : IApplicationEvents
4040
[ThreadStatic]
4141
private static string? _argumentsOverride;
4242

43+
[ThreadStatic]
44+
private static Uri? _activationUri;
45+
4346
internal static void SetArguments(string arguments)
4447
=> _argumentsOverride = arguments;
4548

49+
internal static void SetActivationUri(Uri uri)
50+
=> _activationUri = uri;
51+
4652
partial void InitializePartial()
4753
{
4854
_current = this;
@@ -130,6 +136,12 @@ private void InvokeOnLaunched()
130136
if (CoreApplication.IsFullFledgedApp)
131137
{
132138
OnLaunched(new LaunchActivatedEventArgs(ActivationKind.Launch, GetCommandLineArgsWithoutExecutable()));
139+
140+
if (OperatingSystem.IsAndroid() && _activationUri is { } uri)
141+
{
142+
OnActivated(new ProtocolActivatedEventArgs(uri, ApplicationExecutionState.NotRunning));
143+
_activationUri = null;
144+
}
133145
}
134146
}
135147
}

src/Uno.UI/UI/Xaml/NativeApplication.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,18 @@ internal bool TryHandleIntent(Intent intent)
132132
this.Log().LogDebug("Intent data parsed successfully as Uri, calling OnActivated.");
133133
}
134134

135+
#if ANDROID_SKIA
136+
if (_isRunning)
137+
{
138+
_app?.OnActivated(new ProtocolActivatedEventArgs(uri, ApplicationExecutionState.Running));
139+
}
140+
else
141+
{
142+
Application.SetActivationUri(uri);
143+
}
144+
#else
135145
_app.OnActivated(new ProtocolActivatedEventArgs(uri, _isRunning ? ApplicationExecutionState.Running : ApplicationExecutionState.NotRunning));
146+
#endif
136147
handled = true;
137148
}
138149
else

src/Uno.UWP/ApplicationModel/Activation/ProtocolActivatedEventArgs.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ internal ProtocolActivatedEventArgs()
1818
{
1919
}
2020

21-
#if __APPLE_UIKIT__ || __ANDROID__ || __WASM__
2221
/// <summary>
2322
/// Internal-only constructor for protocol activation.
2423
/// </summary>
@@ -56,6 +55,5 @@ public int CurrentlyShownApplicationViewId
5655
{
5756
get;
5857
}
59-
#endif
6058
}
6159
}

src/Uno.UWP/Generated/3.0.0.0/Windows.ApplicationModel.Activation/ProtocolActivatedEventArgs.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ namespace Windows.ApplicationModel.Activation
88
#endif
99
public partial class ProtocolActivatedEventArgs : global::Windows.ApplicationModel.Activation.IProtocolActivatedEventArgs, global::Windows.ApplicationModel.Activation.IActivatedEventArgs, global::Windows.ApplicationModel.Activation.IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData, global::Windows.ApplicationModel.Activation.IApplicationViewActivatedEventArgs, global::Windows.ApplicationModel.Activation.IViewSwitcherProvider, global::Windows.ApplicationModel.Activation.IActivatedEventArgsWithUser
1010
{
11-
#if false || false || false || IS_UNIT_TESTS || false || __SKIA__ || __NETSTD_REFERENCE__
12-
[global::Uno.NotImplemented("IS_UNIT_TESTS", "__SKIA__", "__NETSTD_REFERENCE__")]
11+
#if false
12+
[global::Uno.NotImplemented("IS_UNIT_TESTS", "__NETSTD_REFERENCE__")]
1313
public global::Windows.ApplicationModel.Activation.ActivationKind Kind
1414
{
1515
get
@@ -18,8 +18,8 @@ public partial class ProtocolActivatedEventArgs : global::Windows.ApplicationMod
1818
}
1919
}
2020
#endif
21-
#if false || false || false || IS_UNIT_TESTS || false || __SKIA__ || __NETSTD_REFERENCE__
22-
[global::Uno.NotImplemented("IS_UNIT_TESTS", "__SKIA__", "__NETSTD_REFERENCE__")]
21+
#if false
22+
[global::Uno.NotImplemented("IS_UNIT_TESTS", "__NETSTD_REFERENCE__")]
2323
public global::Windows.ApplicationModel.Activation.ApplicationExecutionState PreviousExecutionState
2424
{
2525
get
@@ -28,8 +28,8 @@ public partial class ProtocolActivatedEventArgs : global::Windows.ApplicationMod
2828
}
2929
}
3030
#endif
31-
#if false || false || false || IS_UNIT_TESTS || false || __SKIA__ || __NETSTD_REFERENCE__
32-
[global::Uno.NotImplemented("IS_UNIT_TESTS", "__SKIA__", "__NETSTD_REFERENCE__")]
31+
#if false
32+
[global::Uno.NotImplemented("IS_UNIT_TESTS", "__NETSTD_REFERENCE__")]
3333
public global::Windows.ApplicationModel.Activation.SplashScreen SplashScreen
3434
{
3535
get
@@ -48,8 +48,8 @@ public partial class ProtocolActivatedEventArgs : global::Windows.ApplicationMod
4848
}
4949
}
5050
#endif
51-
#if false || false || false || IS_UNIT_TESTS || false || __SKIA__ || __NETSTD_REFERENCE__
52-
[global::Uno.NotImplemented("IS_UNIT_TESTS", "__SKIA__", "__NETSTD_REFERENCE__")]
51+
#if false
52+
[global::Uno.NotImplemented("IS_UNIT_TESTS", "__NETSTD_REFERENCE__")]
5353
public int CurrentlyShownApplicationViewId
5454
{
5555
get
@@ -58,8 +58,8 @@ public int CurrentlyShownApplicationViewId
5858
}
5959
}
6060
#endif
61-
#if false || false || false || IS_UNIT_TESTS || false || __SKIA__ || __NETSTD_REFERENCE__
62-
[global::Uno.NotImplemented("IS_UNIT_TESTS", "__SKIA__", "__NETSTD_REFERENCE__")]
61+
#if false
62+
[global::Uno.NotImplemented("IS_UNIT_TESTS", "__NETSTD_REFERENCE__")]
6363
public global::System.Uri Uri
6464
{
6565
get

0 commit comments

Comments
 (0)