博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UWP 中的 LaunchUriAsync,使用默认浏览器或其他应用打开链接
阅读量:5069 次
发布时间:2019-06-12

本文共 3051 字,大约阅读时间需要 10 分钟。

古老的 Win32 应用启动其他程序太过方便,以至于一部分开发者都已经不记得 Windows 能通过关联协议的方式通过统一资源定位符(URI)来启动应用程序了。

转到 UWP 后,使用 URI 启动应用似乎成为了最推荐的方式。于是一句 LaunchUriAsync 就能解决大多数问题。


常用的 Windows 10 内置协议

URI 协议 启动
http: 默认网页浏览器
mailto: 默认电子邮件
ms-settings: 设置
ms-store: 应用商店

于是,只要 URI 带这些协议头,就能够用表格中的那些应用打开相应的功能了。

如果想知道 ms-settings 里有哪些可用,请参见:;想知道 ms-store 可以如何帮助我们前往商店的具体页面,请参见:。

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 参数,这个参数似乎是指定启动时的一些选项。查看注释后,可以发现这些选项:

/// 获取或设置指示启动与文件或 URI 关联的应用程序时系统是否应显示文件或 URI 可能会不安全的警告的值。/// 
如果应显示警告,则为 true;否则为 false。
public bool TreatAsUntrusted { get; set; }/// 获取或设置一个值,该值指示每当调用关联启动 API 时是否要显示**打开方式**对话框。///
如果应始终显示**打开方式**对话框,则为 true;否则为 false。
public bool DisplayApplicationPicker { get; set; }/// 在启动默认应用程序时获取用户界面 (UI) 选项。///
UI 选项。
public LauncherUIOptions UI { get; }/// 获取或设置表示没有处理文件类型或 URI 的应用程序时,用户应安装的应用程序在存储区中的包系列名称的值。///
应用的程序包系列名称。
public string PreferredApplicationPackageFamilyName { get; set; }/// 获取或设置一个值,该值表示没有处理文件类型或 URI 的应用程序时,用户应安装的应用程序在存储区中的显示名称。///
应用程序的显示名称。
public string PreferredApplicationDisplayName { get; set; }/// 获取或设置表示没有处理文件类型或 URI 的应用程序时,用户应转到的浏览器中的 URI 的值。///
用户应转到的浏览器中的 URI。
public global::System.Uri FallbackUri { get; set; }/// 获取或设置与表示网络上文件的 URI 相关的内容类型。///
URL 的内容类型。
public string ContentType { get; set; }/// 启动目标应用程序,并通过与目标应用程序平分空间或占用比目标应用程序更多或更少的空间,让当前运行的源应用程序保留在屏幕上。///
Windows.UI.ViewManagement.ViewSizePreference 类型的值,指定应用程序所需的视图大小。
public ViewSizePreference DesiredRemainingView { get; set; }/// 启动文件或 URI 时应使用的目标包的包系列名称。 此属性是可选的。///
启动文件或 URI 时应使用的目标包的包系列名称。 此属性是可选的。
public string TargetApplicationPackageFamilyName { get; set; }/// 让应用能访问与用于激活应用的文件相关的文件。///
包含相关文件列表的查询。
public StorageFileQueryResult NeighboringFilesQuery { get; set; }/// 指示是否忽略可以处理 http(s) 方案(如浏览器)的处理程序。 相反,启动将回退到默认浏览器。///
**true** 指示可以处理 http(s) 方案的应用程序将被忽略,而是在默认浏览器中打开该 URI;否则为 **false**。
public bool IgnoreAppUriHandlers { get; set; }/// 获取或设置是否将启动器的选取器限制为当前应用程序及其相关联的 URI 处理程序。///
如果启动器应将选取器限制为当前应用程序及其相关联的 URI 处理程序,则为 true;否则为 false。
public bool LimitPickerToCurrentAppAndAppUriHandlers { get; set; }

比如其中 TreatAsUntrusted 表示标记此次打开是不受信任的。

如果打开程序自己内置的链接,通常置为 false,以便能直接打开。但有时程序需要处理用户输入的数据,这时就不一定真的是期望打开了。于是标记为不安全后,Windows 10 会为我们弹出一个提示款,告诉我们是否真的要切换应用。

Did you mean to switch apps

截图中的 MarkdownMail 是我的一个开源项目,可以前往 多多支持。

我们还可以指定推荐用哪个应用打开(设置 PreferredApplicationPackageFamilyName),指定期望显示的窗口大小(设置 DesiredRemainingView,不过不是具体的大小,而是几种选项),指定只打开自己当前这款应用(设置 LimitPickerToCurrentAppAndAppUriHandlers)。具体查看注释是能够了解的。

参考资料

转载于:https://www.cnblogs.com/walterlv/p/10326592.html

你可能感兴趣的文章
21.Longest Palindromic Substring(最长回文子串)
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>
Java处理多人同时读写文件的文件锁处理
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
判断文本框输入的文字长度
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years
查看>>
SelectSort 选择排序
查看>>
关于android 加载https网页的问题
查看>>
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
小知识:js如何更改css样式
查看>>
PHP count down
查看>>
JVM参数调优:Eclipse启动实践
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>