Share via


如何处理文件激活 (HTML)

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

应用可注册为特定文件类型的默认处理程序。 桌面应用和 Windows 运行时应用都可以注册为默认的文件处理程序。 如果用户将你的应用选作特定文件类型的默认处理程序,则每次启动该类型文件时都将激活你的应用。

如果希望处理某种类型文件的所有文件启动,建议你仅针对该文件类型进行注册。 如果你的应用仅需要在内部使用该文件类型,则无需注册为默认的处理程序。 如果选择了针对某种文件类型进行注册,则为该文件类型激活应用时必须向最终用户提供预期的功能。 例如,某个图片查看器应用可以注册为显示 .jpg 文件。有关文件关联的详细信息,请参阅文件类型和 URI 指南和清单

这些步骤显示了如何注册自定义文件类型 .alsdk,以及在用户启动 .alsdk 文件时如何激活你的应用。

注意  

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

说明

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

应用仅接收包清单中列出的文件扩展名的激活事件。下面是指示应用处理扩展名为 .alsdk 的文件的步骤。

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

    有关文件关联使用的标识符的更多详细信息,请参阅编程标识符。以下是程序包清单中每个可以填写的字段的简短描述:

    字段 描述

    内容类型

    指定 MIME 内容类型,例如特定文件类型的 image/jpeg

    有关允许的内容类型的重要说明:  以下是不能输入到包清单中的 MIME 内容类型(这些类型是保留或禁止的类型)的字母顺序列表:application/force-downloadapplication/octet-streamapplication/unknownapplication/x-msdownload

    名称

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

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

    信息提示

    为一组文件类型指定信息提示。 当用户将光标悬停在此类型的文件的图标上时,将显示此工具提示。

    编辑标志

    为一组文件类型指定编辑标志。编辑标志控制当从不受信任的源获取某个文件时访问该文件的方式。 OpenIsSafe 标志指示可为任何下载的文件安全调用文件类型的 Open 谓词。 AlwaysUnsafe 标志指示用于自动调用文件类型的 Open 谓词的选项已禁用。 用户无法通过“文件类型”对话框覆盖此属性。使用此标志意味着不遵循 OpenIsSafe。打开此类型的不受信任的文件时,此标志将会阻止在安全对话框中启用“不要问我”复选框。

    显示名称

    为一组文件类型指定显示名称。 该显示名称用于标识“控制面板”的设置默认程序中的文件类型。

    徽标

    指定用于标识桌面上以及“控制面板”的设置默认程序中的文件类型的徽标。如果不指定徽标,则使用应用程序的小徽标。

    文件类型

    指定要注册的文件类型,前面带有句点,如“.jpeg”。

    保留和禁用文件类型

    以下是不能为应用注册的文件类型(因为它们为保留或禁止的文件类型)的字母顺序列表:

    注意  

    对于 Windows 应用商店应用

    Accountpicture-msAppxapplicationAppref-msBatCerChmCmdComCplcrtdlldrvExefongadgetHlpHtaInfInsjselnkMsiMspocxpifPs1RegScfScrShbShsSysttfurlVbeVbsWsWscWsfWsh

    注意  

    对于 Windows Phone 应用商店应用

    Windows Phone 为内置应用保留了以下文件类型。

    aac、aetx、asf、bmp、cer、dotm、dotx、gif、hdp、htm、html、ico、icon、jpeg、jpg、jxr、m4a、m4rm、m4v、mov、mp3、mp4、one、onetoc2、p7b、pem、png、pptm、pptx、qcp、rtf、tif、tiff、txt、url、vcf、wav、wdp、wmv、xap、xht、xhtml、xltm、xltx、xml、xsl、zip

    Windows Phone 为操作系统保留了以下文件类型。

    ade、adp、app、application、apprefms、asp、bas、bat、cab、chm、cmd、cnt、com、cpf、cpl、crd、crds、crt、csh、der、dll、exe、fxp、gadget、grp、hlp、hme、hpj、hta、inf、ins、isp、its、jar、js、jse、ksh、lnk、mad、maf、mag、mam、maq、mar、mas、mat、mau、mav、maw、mcf、mda、mdb、mde、mdt、mdw、mdz、msc、msh、msh1、msh1xml、msh2、msh2xml、mshxml、msi、msp、mst、msu、ops、pcd、pif、pl、plg、plsc、prf、prg、printerexport、provxml、ps1、ps1xml、ps2、ps2xml、psc1、psc2、psm1、pst、pvw、py、pyc、pyo、rb、rbw、rdp、reg、rgu、scf、scr、shb、shs、theme、tmp、tsk、url、vb、vbe、vbp、vbs、vhd、vhdx、vsmacros、vsw、webpnp、ws、wsc、wsf、wsh、xaml、xdp、xip、xnk

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

    指定 Desired View 字段以指示当应用的窗口为该文件类型启动时需要的空间量。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. 输入 .alsdk 作为“文件类型”。

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

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

这会向程序包清单中添加一个类似于此的 Extension 元素。windows.fileTypeAssociation 类别指示应用处理扩展名为 .alsdk 的文件。

<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.fileTypeAssociation">
                <FileTypeAssociation Name="alsdk">
                  <DisplayName>SDK Sample File Type</DisplayName>
                  <Logo>images\logo.png</Logo>
                  <InfoTip>SDK Sample tip </InfoTip>
                  <EditFlags OpenIsSafe="true" />
                  <SupportedFileTypes>
                     <FileType ContentType="image/jpeg">.alsdk</FileType>
                  </SupportedFileTypes>
               </FileTypeAssociation>
            </Extension>
         </Extensions>
      </Application>
   </Applications>
</Package>

步骤 2: 添加适当的图标

成为文件类型默认应用的应用在整个系统中的各个位置显示其图标。例如,这些图标显示在以下位置中:

  • Windows 资源管理器 ItemsView、上下文菜单以及功能区
  • 默认程序控制面板
  • 文件选取器
  • 在“开始”屏幕上搜索结果

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

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

步骤 3: 注册激活的事件

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

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

步骤 4: 处理激活的事件

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

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

       // The number of files received is eventArgs.detail.files.size
       // The first file is eventArgs.detail.files[0].name
   }
}

注意  

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

建议应用为打开新页面的每个激活事件创建一个新的 XAML 框架。通过此方式,新 XAML 框架的导航 Backstack 将不包含应用暂停时可能在当前窗口中显示的所有早期内容。 确定针对启动和文件合约使用单个 XAML 框架的应用在导航到新页面之前,应该清除该框架的导航日志上的页面。

通过文件激活启动后,应用应该考虑包括允许用户返回到应用顶部页面的 UI。

备注

收到的文件可能来自不受信任的来源。我们建议在对该文件采取操作之前,先对文件的内容进行验证。有关输入验证的详细信息,请参阅编写安全代码

完整示例

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

相关主题

概念

默认程序

文件类型和协议关联模式

任务

如何启动文件的默认应用

如何处理 URI 激活

指南

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

参考

Windows.Storage.StorageFile

Windows.UI.WebUI.WebUIFileActivatedEventArgs

WinJS.Application.onactivated