UWP 中的 LaunchUriAsync,使用默认浏览器或其他应用打开链接
古老的 Win32 應用啟動其他程序太過方便,以至于一部分開發者都已經不記得 Windows 能通過關聯協議的方式通過統一資源定位符(URI)來啟動應用程序了。
轉到 UWP 后,使用 URI 啟動應用似乎成為了最推薦的方式。于是一句 LaunchUriAsync 就能解決大多數問題。
常用的 Windows 10 內置協議
| http: | 默認網頁瀏覽器 |
| mailto: | 默認電子郵件 |
| ms-settings: | 設置 |
| ms-store: | 應用商店 |
于是,只要 URI 帶這些協議頭,就能夠用表格中的那些應用打開相應的功能了。
如果想知道 ms-settings 里有哪些可用,請參見:啟動 Windows 設置應用 - UWP app developer;想知道 ms-store 可以如何幫助我們前往商店的具體頁面,請參見:啟動 Windows 應用商店應用 - UWP app developer。
LaunchUriAsync
要想簡單地在代碼中使用,一句足以:
await Launcher.LaunchUriAsync(new Uri(@"http://blog.csdn.net/WPwalter/article/details/78081272"));如果你希望在調用成功或失敗后執行一些操作,則可以多寫一些:
var myblog = new Uri(@"http://blog.csdn.net/WPwalter/");var success = await Launcher.LaunchUriAsync(myblog);if (success){// 如果你感興趣,可以在成功啟動后在這里執行一些操作。}else{// 如果你感興趣,可以在這里處理啟動失敗的一些情況。} }然而,UWP 還提供了更多的選項:LauncherOptions。
LauncherOptions
在寫以上代碼時不難發現,LaunchUriAsync 提供了重載傳入 LauncherOptions 參數,這個參數似乎是指定啟動時的一些選項。查看注釋后,可以發現這些選項:
/// <summary>獲取或設置指示啟動與文件或 URI 關聯的應用程序時系統是否應顯示文件或 URI 可能會不安全的警告的值。</summary> /// <returns>如果應顯示警告,則為 true;否則為 false。</returns> public bool TreatAsUntrusted { get; set; } /// <summary>獲取或設置一個值,該值指示每當調用關聯啟動 API 時是否要顯示**打開方式**對話框。</summary> /// <returns>如果應始終顯示**打開方式**對話框,則為 true;否則為 false。</returns> public bool DisplayApplicationPicker { get; set; } /// <summary>在啟動默認應用程序時獲取用戶界面 (UI) 選項。</summary> /// <returns>UI 選項。</returns> public LauncherUIOptions UI { get; } /// <summary>獲取或設置表示沒有處理文件類型或 URI 的應用程序時,用戶應安裝的應用程序在存儲區中的包系列名稱的值。</summary> /// <returns>應用的程序包系列名稱。</returns> public string PreferredApplicationPackageFamilyName { get; set; } /// <summary>獲取或設置一個值,該值表示沒有處理文件類型或 URI 的應用程序時,用戶應安裝的應用程序在存儲區中的顯示名稱。</summary> /// <returns>應用程序的顯示名稱。</returns> public string PreferredApplicationDisplayName { get; set; } /// <summary>獲取或設置表示沒有處理文件類型或 URI 的應用程序時,用戶應轉到的瀏覽器中的 URI 的值。</summary> /// <returns>用戶應轉到的瀏覽器中的 URI。</returns> public global::System.Uri FallbackUri { get; set; } /// <summary>獲取或設置與表示網絡上文件的 URI 相關的內容類型。</summary> /// <returns>URL 的內容類型。</returns> public string ContentType { get; set; } /// <summary>啟動目標應用程序,并通過與目標應用程序平分空間或占用比目標應用程序更多或更少的空間,讓當前運行的源應用程序保留在屏幕上。</summary> /// <returns>Windows.UI.ViewManagement.ViewSizePreference 類型的值,指定應用程序所需的視圖大小。</returns> public ViewSizePreference DesiredRemainingView { get; set; } /// <summary>啟動文件或 URI 時應使用的目標包的包系列名稱。 此屬性是可選的。</summary> /// <returns>啟動文件或 URI 時應使用的目標包的包系列名稱。 此屬性是可選的。</returns> public string TargetApplicationPackageFamilyName { get; set; } /// <summary>讓應用能訪問與用于激活應用的文件相關的文件。</summary> /// <returns>包含相關文件列表的查詢。</returns> public StorageFileQueryResult NeighboringFilesQuery { get; set; } /// <summary>指示是否忽略可以處理 http(s) 方案(如瀏覽器)的處理程序。 相反,啟動將回退到默認瀏覽器。</summary> /// <returns>**true** 指示可以處理 http(s) 方案的應用程序將被忽略,而是在默認瀏覽器中打開該 URI;否則為 **false**。</returns> public bool IgnoreAppUriHandlers { get; set; } /// <summary>獲取或設置是否將啟動器的選取器限制為當前應用程序及其相關聯的 URI 處理程序。</summary> /// <returns>如果啟動器應將選取器限制為當前應用程序及其相關聯的 URI 處理程序,則為 true;否則為 false。</returns> public bool LimitPickerToCurrentAppAndAppUriHandlers { get; set; }比如其中 TreatAsUntrusted 表示標記此次打開是不受信任的。
如果打開程序自己內置的鏈接,通常置為 false,以便能直接打開。但有時程序需要處理用戶輸入的數據,這時就不一定真的是期望打開了。于是標記為不安全后,Windows 10 會為我們彈出一個提示款,告訴我們是否真的要切換應用。
截圖中的 MarkdownMail 是我的一個開源項目,可以前往 markdown-mail @ github 多多支持。
我們還可以指定推薦用哪個應用打開(設置 PreferredApplicationPackageFamilyName),指定期望顯示的窗口大小(設置 DesiredRemainingView,不過不是具體的大小,而是幾種選項),指定只打開自己當前這款應用(設置 LimitPickerToCurrentAppAndAppUriHandlers)。具體查看注釋是能夠了解的。
參考資料
- 啟動 URI 的默認應用 - UWP app developer
- 啟動 Windows 設置應用 - UWP app developer
- 啟動 Windows 應用商店應用 - UWP app developer
轉載于:https://www.cnblogs.com/walterlv/p/10326592.html
總結
以上是生活随笔為你收集整理的UWP 中的 LaunchUriAsync,使用默认浏览器或其他应用打开链接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git的认识
- 下一篇: Hibernate关于父类子类的映射