我想在另一位应用选择我的应用作为共享网络链接的目标后打开我的应用。
首先,我使用OnShareTargetActivated来阅读weblink,然后使用LaunchUriAsync通过我为其创建的自定义方案启动我的应用。
protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
ShareOperation shareOperation = args.ShareOperation;
try
{
if (shareOperation.Data.Contains(StandardDataFormats.WebLink))
{
var URL = await shareOperation.Data.GetWebLinkAsync();
var mAloudURI = @"myApp:?URL=" + URL;
// Launch the URI
await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
var success = await Windows.System.Launcher.LaunchUriAsync(new Uri(mAloudURI));
});
shareOperation.ReportCompleted();
}
}
catch (Exception exc)
{
var i = 0;
}
}
之后,我使用OnActivated读取链接并在传递的链接上打开我的MainPage。
protected override void OnActivated(IActivatedEventArgs args)
{
if (args.Kind == ActivationKind.Protocol)
{
ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;
var url = eventArgs.Uri.PathAndQuery.Substring("?URL=".Length);
Frame rootFrame = Window.Current.Content as Frame;
// Do not repeat app initialization when the Window already has content,
// just ensure that the window is active
if (rootFrame != null)
{
rootFrame.Navigate(typeof(MainPage), url);
}
}
}
当我正在调试时,当我在F10(单步执行)调用LaunchUriAsync的行时,我得到预期的行为,然后执行OnActivated并显示带有我想要的URL的MainPage ... 但是,如果我再次尝试共享,我的应用程序的辅助弹出窗口会显示一段时间,然后它会消失。没有我的破发点被击中......
这是正确的做法吗?
这对我来说是一种非常合乎逻辑的方式,可以打开其他应用程序并与您共享的内容...