使用启动应用程序中的应用程序协议打开新的 UWP 应用程序
Opening new UWP app using app-protocol from Startup application
我可以使用 windows 10 和通用 windows 应用程序中的应用程序协议功能启动应用程序。
为此,我首先在应用程序 B 的 Package.appxmanifest 文件中声明一个协议,然后从我的主应用程序调用应用程序 A,运行 此代码为 运行 应用程序 B:
var success = await Launcher.LaunchUriAsync(new Uri("MyApplicationProtocolName:"));
但是我遇到了一个问题,当主应用程序启动时,我无法午餐应用程序 B,我该怎么做?
仔细查看 Microsoft 关于此主题的示例代码。
https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/AssociationLaunching
另请参阅:
https://docs.microsoft.com/en-us/windows/uwp/launch-resume/launch-app-with-uri
问题是声明协议本身不足以让应用程序响应它。您还需要在应用B中实现协议激活:
public partial class App
{
protected override void OnActivated(IActivatedEventArgs args)
{
if (args.Kind == ActivationKind.Protocol)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
rootFrame = new Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
Window.Current.Content = rootFrame;
}
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
Window.Current.Activate();
}
}
}
如果应用程序尚未启动,您需要在 OnActivated
中执行的初始化可能与 OnLaunched
类似。如果该应用程序已经 运行,您无需执行任何特殊操作,它会直接出现在前台。如果不是 运行,您必须创建主要 Frame
,初始化 Window.Current.Content
,然后执行 Window.Current.Activate()
激活应用程序。
我可以使用 windows 10 和通用 windows 应用程序中的应用程序协议功能启动应用程序。 为此,我首先在应用程序 B 的 Package.appxmanifest 文件中声明一个协议,然后从我的主应用程序调用应用程序 A,运行 此代码为 运行 应用程序 B:
var success = await Launcher.LaunchUriAsync(new Uri("MyApplicationProtocolName:"));
但是我遇到了一个问题,当主应用程序启动时,我无法午餐应用程序 B,我该怎么做?
仔细查看 Microsoft 关于此主题的示例代码。 https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/AssociationLaunching
另请参阅: https://docs.microsoft.com/en-us/windows/uwp/launch-resume/launch-app-with-uri
问题是声明协议本身不足以让应用程序响应它。您还需要在应用B中实现协议激活:
public partial class App
{
protected override void OnActivated(IActivatedEventArgs args)
{
if (args.Kind == ActivationKind.Protocol)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
rootFrame = new Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
Window.Current.Content = rootFrame;
}
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
Window.Current.Activate();
}
}
}
如果应用程序尚未启动,您需要在 OnActivated
中执行的初始化可能与 OnLaunched
类似。如果该应用程序已经 运行,您无需执行任何特殊操作,它会直接出现在前台。如果不是 运行,您必须创建主要 Frame
,初始化 Window.Current.Content
,然后执行 Window.Current.Activate()
激活应用程序。