2012-04-20 59 views
2

我正在構建一個作爲URI的共享目標的應用程序;它採用URI和URL來調用瀏覽器到我們的網站進行共享。我的代碼使用共享目標示例工作,但是Launcher.LaunchUriAsync在調試器外部時總是失敗。它不會拋出,所以我很難弄清楚錯誤可能是什麼;也許一些安全上下文。試圖在共享目標應用程序中使用Launcher.LaunchUriAsync win Win 8

任何想法?代碼本身很短,我直接從shell運行成功= false,並通過Win-C/Share調用。我已經確定清單有三個聯網聲明。其他想法?

if (this.shareOperation.Data.Contains(StandardDataFormats.Uri)) 
{ 
    Uri uri = await this.shareOperation.Data.GetUriAsync(); 
    if (uri != null) 
    { 
     Uri tempUri; 
     Uri.TryCreate("http://www.mysite.com/#/search?v=results&bk=1.0&q="+uri.ToString(), UriKind.Absolute, out tempUri); 
     bool success = await Windows.System.Launcher.LaunchUriAsync(tempUri); 
     if (success) { 
      contentValue.Text += "Success invoking browser" + ":URL="+tempUri.ToString()+ Environment.NewLine; 
     } else { 
      contentValue.Text += "Fail invoking browser" + ":URL=" + tempUri.ToString() + Environment.NewLine; 
     } 
    } 
} 
+0

這在調試器下運行良好?還是你沒有想出如何將調試器附加到共享目標?後一個問題我可以幫忙... – 2012-04-21 22:08:23

回答

1

共享目標不應該啓動另一個應用程序。共享目標旨在託管在共享窗格內,並應爲用戶提供一種快速的上下文方式,以便與應用程序或服務共享內容。

就你而言,也許你應該主持一個WebView並導航到你的服務的URL?

0

爲了成功調用LaunchUriAsync,需要滿足幾個條件。

可以看出here on MSDN,你需要確保:在調用API時

  1. 調用的應用程序必須是可見的用戶。
  2. 除非您從Classic Windows應用程序調用此API,否則必須從ASTA線程(也稱爲UI線程)內調用此API。
  3. 您必須在清單中指定privateNetworkClientServer功能才能啓動Intranet URI,例如指向網絡位置的file:/// URI。
  4. 您不能使用此方法在本地區域中啓動URI。例如,應用程序無法使用file:///協議訪問本地計算機上的文件。相反,您必須使用存儲API訪問文件。

我想前兩個條件之一就是爲什麼你的代碼失敗。 (至少這是我的問題)