diff --git a/src/Calculator/Common/LaunchArguments.cs b/src/Calculator/Common/LaunchArguments.cs index 5ba2359a..8a1be58d 100644 --- a/src/Calculator/Common/LaunchArguments.cs +++ b/src/Calculator/Common/LaunchArguments.cs @@ -1,5 +1,4 @@ using System; -using System.Linq; using Windows.ApplicationModel.Activation; using Windows.ApplicationModel.UserActivities; @@ -17,35 +16,29 @@ namespace CalculatorApp public static bool IsSnapshotProtocol(this IActivatedEventArgs args) => args is IProtocolActivatedEventArgs protoArgs && protoArgs.Uri != null && - protoArgs.Uri.AbsolutePath == "/snapshot" && - !string.IsNullOrEmpty(protoArgs.Uri.Query); + protoArgs.Uri.Segments != null && + protoArgs.Uri.Segments.Length == 2 && + protoArgs.Uri.Segments[0] == "snapshots/"; /// /// GetActivityId() requires the parameter `launchUri` to be a well-formed /// snapshot URI. /// - /// - /// + /// the Uri to launch with a snapshot context. + /// Activity ID public static string GetActivityId(this Uri launchUri) { - const string ActivityIdKey = "activityId="; - var segment = launchUri.Query.Split('?', '&').FirstOrDefault(x => x.StartsWith(ActivityIdKey)); - if (segment != null) - { - segment = segment.Trim(); - return segment.Length > ActivityIdKey.Length ? - segment.Substring(ActivityIdKey.Length) : - string.Empty; - } - return string.Empty; + return launchUri.Segments[1].Trim(); } public static bool VerifyIncomingActivity(this SnapshotLaunchArguments launchArgs, UserActivity activity) { - if (string.IsNullOrEmpty(activity.ActivityId) || + if (activity.State != UserActivityState.Published || + string.IsNullOrEmpty(activity.ActivityId) || activity.ActivationUri == null || - activity.ActivationUri.AbsolutePath != "/snapshot" || - string.IsNullOrEmpty(activity.ActivationUri.Query)) + activity.ActivationUri.Segments == null || + activity.ActivationUri.Segments.Length != 2 || + activity.ActivationUri.Segments[0] != "snapshots/") { return false; } diff --git a/src/Calculator/Views/MainPage.xaml.cs b/src/Calculator/Views/MainPage.xaml.cs index ba82deaf..c5d4eebf 100644 --- a/src/Calculator/Views/MainPage.xaml.cs +++ b/src/Calculator/Views/MainPage.xaml.cs @@ -66,13 +66,12 @@ namespace CalculatorApp } var channel = UserActivityChannel.GetDefault(); var activity = await channel.GetOrCreateUserActivityAsync($"{Guid.NewGuid()}"); - activity.ActivationUri = new Uri($"ms-calculator:///snapshot?activityId={activity.ActivityId}"); + activity.ActivationUri = new Uri($"ms-calculator:snapshots/{activity.ActivityId}"); activity.ContentInfo = UserActivityContentInfo.FromJson(Model.SaveApplicationSnapshot().Stringify()); - + activity.IsRoamable = false; var resProvider = AppResourceProvider.GetInstance(); activity.VisualElements.DisplayText = $"{resProvider.GetResourceString("AppName")} - {resProvider.GetResourceString(NavCategoryStates.GetNameResourceKey(Model.Mode))}"; - await activity.SaveAsync(); args.Request.SetUserActivity(activity); deferral.Complete();