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();