如何通过 URI 激活打开 WinUI Maui?

2024-01-17

我创建了一个毛伊岛 Windows 应用程序。我希望通过 URI 激活应用程序并将查询参数传递给应用程序。

我在包清单中添加了用于通过 uri 调用应用程序的 Windows 协议:

  <Extensions>
            <uap:Extension Category="windows.protocol">
              <uap:Protocol Name="my-app">
                <uap:DisplayName>My App</uap:DisplayName>
              </uap:Protocol>
            </uap:Extension>
      </Extensions>

当我通过浏览器 my-app://foo.com?user=123456 激活应用程序时,应用程序启动,但它作为冷启动启动。在我的 Win UI 应用程序中,我覆盖了 onLaunched 方法,但无论我如何启动该应用程序,我都无法访问该协议。我正在尝试从我的 UWP 应用程序重新创建以下代码:

protected override void OnActivated(IActivatedEventArgs args)
    {
        if (args.Kind == ActivationKind.Protocol)
        {

            ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;
            var queryStr = eventArgs.Uri.Query;
            App.UserId = System.Web.HttpUtility.ParseQueryString(queryStr).Get("user");

            // Navigate to a view
            Frame rootFrame = Window.Current.Content as Frame;
            if (rootFrame == null)
            {
                rootFrame = new Frame();
                Xamarin.Forms.Forms.Init(args);
                Window.Current.Content = rootFrame;
            }

            rootFrame.Navigate(typeof(MainPage), eventArgs);
        }

        Window.Current.Activate();
    }

所以我已经开始这样做,但 UWPLaunchActivatedEventArg 始终作为 Launch 而不是协议返回。

    protected override void OnLaunched(LaunchActivatedEventArgs args)
{
  var kind =   args.UWPLaunchActivatedEventArgs.Kind;
        base.OnLaunched(e)
}

这是我的解决方案:

var activatedEventArgs = Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent().GetActivatedEventArgs();

run your URI with parameters and here is the screenshot: enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 URI 激活打开 WinUI Maui? 的相关文章

随机推荐