了解如何为统一资源标识符(URI)启动默认应用。 URI 允许启动另一个应用来执行特定任务。 本主题还概述了 Windows 中内置的许多 URI 方案。 也可以启动自定义 URI。 有关注册自定义 URI 方案和处理 URI 激活的详细信息,请参阅 “处理 URI 激活”。
URI 方案允许通过单击超链接打开应用。 正如可以使用 mailto:启动新电子邮件一样,可以使用 http: 或 https:打开默认 Web 浏览器。
本主题介绍 Windows 中内置的以下 URI 方案:
URI 方案 | 发射 |
---|---|
bingmaps:、ms-drive-to:和 ms-walk-to: | “地图”应用 |
http: 和 https: | 默认 Web 浏览器 |
mailto: | 默认电子邮件应用 |
microsoft-edge: | Microsoft Edge 浏览器 |
ms-chat: | 消息应用 |
ms-people: | 联系人应用 |
ms-photos: | 照片应用 |
ms-clicktodo: | 单击“进行”功能(属于 召回的一部分) |
ms-settings: | 设置应用程序 |
ms-store: | 商店应用 |
msnweather: | 天气应用 |
例如,以下 URI 将打开默认浏览器,并显示 Microsoft 必应网站页面: https://bing.com/
还可以启动自定义 URI 方案。 如果没有安装用于处理该 URI 的应用,可以推荐一个应用供用户安装。 有关详细信息,请参阅 :在没有应用程序可以处理 URI 的情况下推荐一个应用程序。
通常,你的应用无法选择启动的应用。 用户决定启动哪个应用程序。 多个应用可以注册以处理相同的 URI 方案。 例外情况适用于保留的 URI 方案。 保留 URI 方案的注册将被忽略。 有关保留的 URI 协议的完整列表,请参阅 处理 URI 激活。 如果多个应用可能注册了相同的 URI 方案,应用可以建议启动特定的应用。 有关详细信息,请参阅 :在没有应用程序可以处理 URI 的情况下推荐一个应用程序。
重要 API
本主题使用了以下 Windows 运行时 (WinRT) API:
请注意,许多 WinRT API 将与其他具有包标识的桌面应用配合使用。 存在一些例外情况,其中大多数都与特定于 UI 呈现或输入的 API 相关。 某些 LauncherOptions(如 TreatAsUntrusted)仅适用于 UWP 应用。 若要详细了解如何使桌面应用能够使用 WinRT API,请参阅 在桌面应用中调用 Windows 运行时 API。
调用 LaunchUriAsync 以启动 URI
使用 LaunchUriAsync 方法启动 URI。 调用此方法时,应用必须是前台应用,也就是说,它必须对用户可见。 此要求有助于确保用户保持控制状态。 若要满足此要求,请确保将所有 URI 启动直接绑定到应用的 UI。 用户必须始终采取一些操作来启动 URI 启动。 在 UWP 应用中,如果尝试启动 URI 且应用不在前台,启动将失败,并且将调用错误回调。
首先创建 一个 System.Uri 对象来表示 URI,然后将该对象传递给 LaunchUriAsync 方法。 使用返回结果查看调用是否成功,如以下示例所示。
private async void launchURI_Click(object sender, RoutedEventArgs e)
{
// The URI to launch
var bingUri = new Uri(@"https://www.bing.com");
// Launch the URI
var success = await Windows.System.Launcher.LaunchUriAsync(bingUri);
if (success)
{
// URI launched
}
else
{
// URI launch failed
}
}
在某些情况下,作系统将提示用户查看他们是否确实想要切换应用。
重要
此提示仅受 UWP 应用支持。 如果 Windows 尝试显示桌面应用的此提示,启动将失败。
如果你的应用是 UWP 应用,并始终希望显示此提示,请使用 Windows.System.LauncherOptions.TreatAsUntrusted 属性让操作系统显示警告信息。
// The URI to launch
var uriBing = new Uri(@"http://www.bing.com");
// Set the option to show a warning
var promptOptions = new Windows.System.LauncherOptions
{
TreatAsUntrusted = true
};
// Launch the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uriBing, promptOptions);
如果没有可处理 URI 的应用程序,建议一个应用程序
在某些情况下,用户可能尚未安装应用来处理要启动的 URI。 默认情况下,作系统会通过向用户提供一个链接来搜索应用商店中的相应应用来处理这些情况。 如果您想在这种情况下给用户推荐具体要获取的应用程序,可以通过传递该建议和要启动的 URI 来实现。
当多个应用已注册处理 URI 方案时,建议也很有用。 建议使用特定应用,如果已安装该应用,Windows 将打开该应用。
要提出建议,请调用 Windows.System.Launcher.LaunchUriAsync(Uri, LauncherOptions) 方法,并将 LauncherOptions.preferredApplicationPackageFamilyName 设置为您想推荐的应用在商店中的包系列名称。 操作系统使用此信息,将在应用商店中搜索应用的常规选项替换为使用特定选项从应用商店获取推荐的应用。
// Set the recommended app
var options = new Windows.System.LauncherOptions
{
PreferredApplicationPackageFamilyName = "Contoso.URIApp_8wknc82po1e",
PreferredApplicationDisplayName = "Contoso URI App"
};
// Launch the URI and pass in the recommended app
// in case the user has no apps installed to handle the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uriContoso, options);
设置剩余的视图首选项
重要
此功能仅在 UWP 应用中可用。 在桌面应用中使用时,将忽略该属性。
调用 LaunchUriAsync 的源应用可以请求他们在 URI 启动后保持在屏幕上。 默认情况下,Windows 会尝试在源应用和处理 URI 的目标应用之间平等共享所有可用空间。 源应用可以使用 DesiredRemainingView 属性向作系统指示,他们希望其应用窗口占用更多或更少的可用空间。 DesiredRemainingView 还可以用来表明源应用在 URI 启动后无需继续显示在屏幕上,并且可以被目标应用完全取代。 此属性仅指定调用应用的首选窗口大小。 它未指定可能同时在屏幕上的其他应用的行为。
注释
当 Windows 确定源应用的最终窗口大小时,会考虑多种不同的因素,例如源应用的首选项、屏幕上的应用数、屏幕方向等。 通过设置 DesiredRemainingView,你不能保证源应用的特定窗口化行为。
// Set the desired remaining view.
var options = new Windows.System.LauncherOptions
{
DesiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.UseLess
};
// Launch the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uriContoso, options);
URI 协议方案
本部分介绍了各种 URI 方案。
电子邮件 URI 方案
使用 mailto: URI 方案启动默认邮件应用。
URI 方案 | 结果 |
---|---|
mailto: |
启动默认电子邮件应用。 |
mailto:\[email address\] |
启动电子邮件应用,并在“收件人”行上创建具有指定电子邮件地址的新邮件。 请注意,在用户点击“发送”之前,不会发送电子邮件。 |
HTTP URI 方案
使用 http: URI 方案启动默认 Web 浏览器。
URI 方案 | 结果 |
---|---|
http: 或 https: |
启动默认 Web 浏览器。 |
地图应用 URI 方案
使用 bingmaps:、ms-drive-to:,ms-walk-to: URI 方案 启动 Windows Maps 应用, 特定地图、路线和搜索结果。 例如,以下 URI 将打开 Windows 地图应用,并显示以纽约市为中心的地图。
bingmaps:?cp=40.726966~-74.006076
有关详细信息,请参阅 启动 Windows 地图应用。 若要在 UWP 应用中使用地图控件,请参阅 显示具有 2D、3D 和街景视图的地图。 如果在 WinUI 应用或其他桌面应用中使用 Windows 应用 SDK 1.5 或更高版本,可以使用 MapControl。
消息传递应用 URI 方案
使用 ms-chat: URI 方案启动Microsoft消息应用。
URI 协议 | 结果 |
---|---|
ms-chat: |
启动消息应用。 |
ms-chat:?ContactID={contacted} |
允许使用特定联系人的信息启动消息传递应用程序。 |
ms-chat:?Body={body} |
允许使用字符串启动消息应用程序,以用作消息内容。 |
ms-chat:?Addresses={address}&Body={body} |
允许使用特定地址的信息以及字符串作为消息内容启动消息应用程序。 注意:地址可以拼接。 |
ms-chat:?TransportId={transportId} |
允许使用特定传输 ID 启动消息传递应用程序。 |
联系人应用 URI 方案
使用 ms-people: URI 方案启动 People 应用。 有关更多信息,请参阅 启动联系人应用。
重要
People 应用正在移动到新的 Outlook。 可以通过在“人员”应用的工具栏上选择“ 导出联系人 ”,然后将其导入到新的 Outlook 中来带走联系人。 有关详细信息,请参阅 “管理联系人”,并通过新的 Outlook for Windows(预览版)与人员联系 。
照片应用程序 URI 架构
使用 ms-photos: URI 方案启动“照片”应用以查看图像或编辑视频。 例如:
操作 | URI |
---|---|
查看图像 | ms-photos:viewer?fileName=c:\users\userName\Pictures\image.jpg |
编辑视频 | ms-photos:videoedit?InputToken=123abc&Action=Trim&StartTime=01:02:03 |
注释
如果要从 UWP 应用启动“照片”应用,则仅桌面上提供用于编辑视频或显示图像的 URI。
下表列出了照片应用的其他受支持的 URI 方案:
URI 协议 | 结果 |
---|---|
ms-photos:viewer?fileName={filename} |
启动“照片”应用以查看指定图像,其中 {filename} 是完全限定的路径名称。 例如:c:\users\userName\Pictures\ImageToView.jpg |
ms-photos:videoedit?InputToken={input token} |
在文件标记所指文件的视频编辑模式下启动“照片”应用程序。 InputToken 是必需的。 使用 SharedStorageAccessManager 获取文件的令牌。 |
ms-photos:videoedit?Action={action} |
一个参数,指示打开“照片”应用的视频编辑模式,其中 {action} 是: SlowMotion、 FrameExtraction、 Trim、 View、 Ink。 需要 操作。 |
ms-photos:videoedit?StartTime={timespan} |
一个可选参数,指定开始播放视频的位置。
{timespan} 必须采用格式 "hh:mm:ss.ffff" 。 如果未指定,则默认为 00:00:00.0000 |
设置应用 URI 方案
使用 ms-settings: URI 协议 启动 Windows 设置应用程序。 启动“设置”应用是编写注重隐私的应用程序的重要组成部分。 如果应用无法访问敏感资源,我们建议为用户提供指向该资源的隐私设置的便捷链接。
例如,以下 URI 将打开“设置”应用并显示相机隐私设置:
ms-settings:privacy-webcam
有关详细信息,请参阅 “启动 Windows 设置”应用 和安全 与标识。
商店应用 URI 方案
使用 ms-windows-store: URI 方案 启动Microsoft应用商店应用。 打开产品详细信息页、产品审阅页和搜索页等。例如,以下 URI 将打开 Microsoft 应用商店应用,并启动应用商店的主页。
ms-windows-store://home/
有关详细信息,请参阅 使用 ms-windows-store URI。
天气应用 URI 方案
使用 msnweather: URI 方案启动天气应用。
URI 方案 | 结果 |
---|---|
msnweather://forecast?la=\[latitude\]&lo=\[longitude\] |
基于位置地理坐标在“预测”页中启动天气应用。latitude 指位置的纬度。longitude 指的是该位置的经度。 |
Microsoft Edge URI 方案
使用 microsoft-edge: URI 方案将 Microsoft Edge 浏览器启动到指定的 URL。
URI 方案 | 结果 |
---|---|
microsoft-edge:https://example.com/ |
打开 Microsoft Edge 浏览器并导航到 https://example.com/ |
无论用户的默认浏览器设置如何,都可以使用此 URI 方案启动 Microsoft Edge 浏览器。