2017-08-28 53 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

相關問題