从UWP URI协议方案启动不导航

时间:2018-06-18 19:40:05

标签: xamarin.forms uwp url-scheme uwp-navigation

我已按照找到的in the documentation说明进行操作;但是,当我使用指定的协议my-protocol://启动我的应用程序(键入到Web浏览器中)时,应用程序将启动,但它只会停留在启动画面上,就像导航无法执行任何操作一样:

代码示例:

// MyApp.UWP/App.xaml.cs
protected override void OnActivated(IActivatedEventArgs args)
  {
      if (args.Kind == ActivationKind.Protocol)
      {
         ProtocolActivatedEventArgs eventArgs = 
             args as ProtocolActivatedEventArgs;

         // TODO: Decide where to navigate, but for now just go to main page

         Frame rootFrame = Window.Current.Content as Frame;
         rootFrame.Navigate(typeof(MainPage), args);
      }
   }

有什么明显的事我做错了吗?也许有更好的方法来处理导航?或者也许有些东西我忽略了?

修改

这很难排除故障,因为我不能在visual studio中运行调试。为了测试它,我实际上必须从my-protocol://启动它,它没有连接到调试器。

有没有办法在从url / protocol启动时调试它?

1 个答案:

答案 0 :(得分:2)

我可以重现您的问题。 @kennyzx的建议是正确的。在导航之前,您首先需要进行判断。

请参考以下代码示例以供参考。

protected override void OnActivated(IActivatedEventArgs args)
{
        base.OnActivated(args);
        if (args.Kind == ActivationKind.Protocol)
        {
            ProtocolActivatedEventArgs eventArgs =
                args as ProtocolActivatedEventArgs;

            // TODO: Decide where to navigate, but for now just go to main page

            Frame rootFrame = Window.Current.Content as Frame;
            if (rootFrame == null)
            {
                rootFrame = new Frame();
            }
            Window.Current.Content = rootFrame;
            rootFrame.Navigate(typeof(MainPage), args);
            Window.Current.Activate();
        }
}