如何处理 URI 激活 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

应用可注册为特定统一资源标识符 (URI) 方案名称的默认处理程序。 桌面应用和 Windows 运行时应用都可以注册为 URI 方案名称的默认处理程序。 如果用户将你的应用选作 URI 方案名称的默认处理程序,则每次启动该类型 URI 时都将激活你的应用。

如果希望处理该类型 URI 方案的所有 URI 启动,建议你仅针对 URI 方案名称进行注册。 如果选择了针对某个 URI 方案名称进行注册,则为该 URI 方案激活应用时必须向最终用户提供预期的功能。 例如,针对 mailto: URI 方案名称注册的应用应该能够打开新的电子邮件,以便用户编写新电子邮件。 有关 URI 关联的详细信息,请参阅文件类型和 URI 指南和清单

这些步骤显示了如何注册自定义 URI 方案名称 alsdk://,以及在用户启动 alsdk:// URI 时如何激活你的应用。

注意  

在 Windows Phone 应用商店应用中,保留某些 URI 和文件扩展名以用于内置应用和操作系统。使用保留的 URI 或文件扩展名注册应用的尝试将被忽略。有关详细信息,请参阅本页面上的列表。

说明

步骤 1: 指定包清单中的扩展点

应用仅接收程序包清单中列出的 URI 方案名称的激活事件。下面是指示应用处理 alsdk URI 方案名称的方式。

  1. 在解决方案资源管理器中双击以打开 package.appxmanifest。

    以下是程序包清单中每个可以填写的字段的简短描述:

    字段 描述

    名称

    为共享相同显示名称、徽标、信息提示和编辑标志的一组文件类型选择一个名称。选择一个可在整个应用更新期间保持不变的组名称。

    注意  “名称”必须全部为小写字母。
     

    保留和禁用文件类型

    以下是按字母顺序排列的 Uri 方案列表,由于它们被保留或禁用,你无法为应用注册它们:

    注意  

    对于 Windows 应用商店应用

    application.manifestapplication.referencebatfileblobcerfilechm.filecmdfilecomfilecplfiledllfiledrvfileexefileexplorer.assocactionid.burnselectionexplorer.assocactionid.closesessionexplorer.assocactionid.erasediscexplorer.assocactionid.zipselectionexplorer.assocprotocol.search-msexplorer.burnselectionexplorer.closesessionexplorer.erasediscexplorer.zipselectionfilefonfilehlpfilehtafileinffileinsfileinternetshortcutjsefilelnkfilemicrosoft.powershellscript.1ms-accountpictureproviderms-appdatams-appxms-autoplaymsi.packagemsi.patchms-windows-storeocxfilepiffileregfilescrfilescriptletfileshbfileshcmdfileshsfilesmbsysfilettffileunknownusertileprovidervbefilevbsfilewindows.gadgetwsffilewsfilewshfile

    注意  

    对于 Windows Phone 应用商店应用

    Windows Phone 为内置应用保留以下 Uri 方案。

    bing、callto、dtmf、http、https、mailto、maps、ms-excel、ms-powerpoint、ms-settings-airplanemode、ms-settings-bluetooth、ms-settings-cellular、ms-settings-emailandaccounts、ms-settings-location、ms-settings-lock、ms-settings-wifi、ms-word、office、onenote、tel、wallet、xbls、zune

    Windows Phone 为操作系统保留以下 Uri 方案。

    Explorer.AssocActionId.BurnSelection、Explorer.AssocActionId.CloseSession、Explorer.AssocActionId.EraseDisc、Explorer.AssocActionId.ZipSelection、Explorer.AssocProtocol.search-ms、Explorer.BurnSelection、Explorer.CloseSession、Explorer.EraseDisc、Explorer.ZipSelection、File、Iehistory、Ierss、Javascript、Jscript、LDAP、Res、rlogin、StickyNotes、telnet、tn3270、Vbscript、windowsmediacenterapp、windowsmediacenterssl、windowsmediacenterweb、WMP11.AssocProtocol.MMS

    显示名称

    指定用于标识“控制面板”的设置默认程序中 URI 方案名称的显示名称。

    徽标

    指定用于标识“控制面板”的设置默认程序中 URI 方案名称的徽标。如果未指定徽标,则使用应用的小徽标。

    “所需视图”(仅适用于 Windows)

    指定 Desired View 字段以指示当应用的窗口为该 URI 方案名称启动时需要的空间量。Desired View 的可能值有 DefaultUseLessUseHalfUseMoreUseMinimum

    注意  Windows 在确定目标应用的最终窗口尺寸时会考虑多个不同因素;例如,源应用的首选项、屏幕上的应用数量以及屏幕的方向。设置“所需视图”并不保证为目标应用设定具体的窗口化行为。
     

    Windows 8.1:  Desired View 在 Windows 8.1 和 Windows Server 2012 R2 之前的版本中不受支持。

    Windows Phone:  Desired View 不受 Windows Phone 支持。

     

  2. 选择“声明”选项卡。

  3. 从下拉列表中选择“协议”****,然后单击“添加”。

  4. 输入 alsdk 作为“名称”****。

  5. 输入“images\Icon.png”作为“徽标”。

  6. 按 Ctrl+S 保存对 package.appxmanifest 的更改。

这会向程序包清单中添加一个类似于此的 Extension 元素。windows.protocol 类别指示应用处理 alsdk URI 方案名称。


<Package xmlns="https://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="https://schemas.microsoft.com/appx/2013/manifest">
   <Applications>
      <Application Id="AutoLaunch.App">
         <Extensions>
            <Extension Category="windows.protocol">
               <Protocol Name="alsdk"/>
               <Logo>images\logo.png</Logo>                                     
               <DisplayName>SDK Sample URI Scheme</DisplayName>
            </Extension>                      
         </Extensions>
      </Application>
   </Applications>
</Package>

步骤 2: 添加适当的图标

成为 URI 方案名称默认应用的应用在整个系统的多个位置中显示其图标,例如在“默认程序”控制面板中。

我们建议在项目中包含合适的图标,这样所有这些位置中的徽标都很美观。对于 Windows 应用商店应用,在图像文件夹中包含用于小徽标和图标大小的 16/32/48/256 像素版本。而对于 Windows Phone 应用商店应用,则包含 63/129/336 像素版本。将应用磁贴徽标的外观与烘焙颜色盘匹配,并将该会徽标扩展至边界,而无需对其进行填充。在白色背景上测试你的图标。 有关示例图标,请参阅关联启动示例 (Windows)

图像文件夹中有解决方案资源管理器和文件视图。对于“Icon.targetsize”和“smallTile-sdk”,有 16、32、48 以及 256 像素版本

步骤 3: 注册激活的事件

注册 activated 事件以处理 URI 激活。

WinJS.Application.addEventListener("activated", onActivatedHandler, false);

步骤 4: 处理激活的事件

在步骤 1 中注册的 activated 事件处理程序接收所有激活事件。kind 属性指示激活事件的类型。此示例设置为处理 protocol 激活事件。

function onActivatedHandler(eventArgs) {
   if (eventArgs.detail.kind == Windows.ApplicationModel.Activation.ActivationKind.protocol) 
   {
       // TODO: Handle URI activation.

       // The received URI is eventArgs.detail.uri.rawUri
   }
}

备注

任何应用或网站(包括恶意应用或网站)都可以使用你的 URI 方案名称。因此,在 URI 中获得的任何数据都可能来自不受信任的来源。建议千万不要基于在 URI 中接收的参数执行永久性操作。例如,可以使用 URI 参数将应用启动到用户的帐户页面,但建议千万不要将其用于直接修改用户的帐户。

注意  如果为应用创建新的 URI 方案名称,请确保遵循 RFC 4395 中的指南。这样会确保你的名称符合 URI 方案的标准。

 

注意  

通过协议合约启动后,Windows Phone 应用商店应用应确保“后退”按钮可使用户返回到已启动应用的屏幕,而不是应用的早期内容。

建议应用为打开新 URI 目标的每个激活事件创建一个新的 XAML 框架。通过此方式,新 XAML 框架的导航 Backstack 将不包含应用暂停时可能在当前窗口中显示的所有早期内容。

确定针对启动和协议合约使用单个 XAML 框架的应用在导航到新页面之前,应该清除该框架的导航日志上的页面。 通过协议合约启动后,应用应该考虑包括允许用户返回到应用顶部的 UI。

完整示例

请参阅关联启动示例 (Windows)

相关主题

概念

默认程序

文件类型和 URI 关联模型

Windows 8 Release Preview 和 Windows Server 2012 RC 兼容性手册(用户模型信息)

任务

如何启动 URI 的默认应用

如何处理文件激活

指南

文件类型和 URI 的指南和清单

参考

Windows.UI.WebUI.WebUIProtocolActivatedEventArgs

WinJS.Application.onactivated