使用启动应用程序中的应用程序协议打开新的 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() 激活应用程序。