2017-08-28 171 views
0

更新:通过在调用它时在app3旁边添加“:”我不再发生错误,但该应用程序仍未启动,而是收到错误消息,告诉我我需要一个打开app3的新应用程序,我该如何解决这个问题?为什么我不能简单地打开应用程序?通过UWP中的自定义URI执行应用程序

我有一个应用程序app3除了打开一个空白页之外别无他法。 <code>app3</code>

从另一个应用程序app4我想打电话给app3

public MainPage() 
    { 
     this.InitializeComponent(); 
     callUri(); 

    } 

    private async void callUri() 
    { 
     var uriBing = new Uri(@"app3"); 

     // Launch the URI 
     var success = await Windows.System.Launcher.LaunchUriAsync(uriBing); 
    } 

,但我得到folling错误消息:

System.UriFormatException: 'Invalid URI: The format of the URI could not be determined.'

我究竟做错了什么?用于URI处理的Windows文档并没有真正知道如何调用自定义URI,只有它们的预制的URI,而且我还没有看到任何其他的问题。 App3包已经被创建。

+0

我从来没有与UWP工作过。只是随机猜测:'app3'不是一个有效的URI。您可能需要提供更多,也许像'app3:'这样的知道app3是架构。 – mason

+0

@mason是的,工作。然而之后,该应用程序仍然无法正常工作,因为它现在说我需要一个新的应用程序来打开它。 – user8296390

+0

听起来像是对我不同的问题。 – mason

回答

1

如果您希望使用协议(称为协议,即:yourappname://)启动您的应用程序,则需要在appxmanifest声明中对其进行定义。就像您在应用中所做的一样。然后你可以使用你的应用名称和冒号来呼叫它(应用://)

现在你的应用一旦通过协议启动就不会进入默认页面,你只会看到一个空白页面。您需要在App.xaml.cs中的OnActivated方法中处理它,您需要覆盖该方法并处理协议激活。

protected override void OnActivated(IActivatedEventArgs args) 
    { 
     if (args.Kind == ActivationKind.Protocol) 
     { 
     ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs; 
     // Navigate to a view 
     Frame rootFrame = Window.Current.Content as Frame; 
     if (rootFrame == null) 
     { 
      rootFrame = new Frame(); 
      Window.Current.Content = rootFrame; 
     } 
     // assuming you wanna go to MainPage when activated via protocol 
     rootFrame.Navigate(typeof(MainPage), eventArgs); 

     } 
    } 

欲了解更多信息,你可以阅读更多here

+0

我仍然会收到提示,要求您在Windows应用商店中找到能够打开app3的应用程序 – user8296390

+0

您是否正在用冒号和斜杠进行操作,尝试使用双斜杠(app://)。为什么可以提示使用应用程序选择对话框的另一个原因是,还有另一个使用相同协议注册的应用程序。如果是这种情况,它会提示你选择一个应用程序打开,你应该在列表中看到你的app3。 – Lance

+0

即使使用两个斜杠,系统会提示您从Windows应用商店中分离出一个应用,但推荐的应用打开app3的列表也是空的。 – user8296390

相关问题