如何处理文件激活 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
应用可注册为特定文件类型的默认处理程序。 桌面应用和 Windows 运行时应用都可以注册为默认的文件处理程序。 如果用户将你的应用选作特定文件类型的默认处理程序,则每次启动该类型文件时都将激活你的应用。
如果希望处理某种类型文件的所有文件启动,建议你仅针对该文件类型进行注册。 如果你的应用仅需要在内部使用该文件类型,则无需注册为默认的处理程序。 如果选择了针对某种文件类型进行注册,则为该文件类型激活应用时必须向最终用户提供预期的功能。 例如,某个图片查看器应用可以注册为显示 .jpg 文件。有关文件关联的详细信息,请参阅文件类型和 URI 指南和清单。
这些步骤显示了如何注册自定义文件类型 .alsdk,以及在用户启动 .alsdk 文件时如何激活你的应用。
注意
在 Windows Phone 应用商店应用中,保留某些 URI 和文件扩展名以用于内置应用和操作系统。使用保留的 URI 或文件扩展名注册应用的尝试将被忽略。有关详细信息,请参阅本页面上的列表。
说明
步骤 1: 指定包清单中的扩展点
应用仅接收包清单中列出的文件扩展名的激活事件。下面是指示应用处理扩展名为 .alsdk
的文件的步骤。
在解决方案资源管理器中双击以打开 package.appxmanifest。
有关文件关联使用的标识符的更多详细信息,请参阅编程标识符。以下是程序包清单中每个可以填写的字段的简短描述:
字段 描述 内容类型
指定 MIME 内容类型,例如特定文件类型的 image/jpeg。
有关允许的内容类型的重要说明: 以下是不能输入到包清单中的 MIME 内容类型(这些类型是保留或禁止的类型)的字母顺序列表:application/force-download、application/octet-stream、application/unknown、application/x-msdownload。
名称
为共享相同显示名称、徽标、信息提示和编辑标志的一组文件类型选择一个名称。选择一个可在整个应用更新期间保持不变的组名称。
注意 “名称”必须全部为小写字母。信息提示
为一组文件类型指定信息提示。 当用户将光标悬停在此类型的文件的图标上时,将显示此工具提示。
编辑标志
为一组文件类型指定编辑标志。编辑标志控制当从不受信任的源获取某个文件时访问该文件的方式。 OpenIsSafe 标志指示可为任何下载的文件安全调用文件类型的 Open 谓词。 AlwaysUnsafe 标志指示用于自动调用文件类型的 Open 谓词的选项已禁用。 用户无法通过“文件类型”对话框覆盖此属性。使用此标志意味着不遵循 OpenIsSafe。打开此类型的不受信任的文件时,此标志将会阻止在安全对话框中启用“不要问我”复选框。
显示名称
为一组文件类型指定显示名称。 该显示名称用于标识“控制面板”的设置默认程序中的文件类型。
徽标
指定用于标识桌面上以及“控制面板”的设置默认程序中的文件类型的徽标。如果不指定徽标,则使用应用程序的小徽标。
文件类型
指定要注册的文件类型,前面带有句点,如“.jpeg”。
保留和禁用文件类型
以下是不能为应用注册的文件类型(因为它们为保留或禁止的文件类型)的字母顺序列表:
注意
对于 Windows 应用商店应用
Accountpicture-ms、 Appx、application、 Appref-ms、Bat、Cer、Chm、 Cmd、 Com、 Cpl、 crt、 dll、drv、 Exe、fon、gadget、Hlp、 Hta、Inf 、Ins、 jse、 lnk、 Msi、 Msp、 ocx、 pif、Ps1、Reg、Scf、Scr、Shb、Shs、Sys、ttf、url、Vbe、Vbs、 Ws、Wsc、Wsf、 Wsh
注意
对于 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 的可能值有 Default、UseLess、UseHalf、UseMore 或 UseMinimum。
注意 Windows 在确定目标应用的最终窗口尺寸时会考虑多个不同因素;例如,源应用的首选项、屏幕上的应用数量以及屏幕的方向。设置“所需视图”并不保证为目标应用设定具体的窗口化行为。Windows 8.1: Desired View 在 Windows 8.1 和 Windows Server 2012 R2 之前的版本中不受支持。
Windows Phone: Desired View 不受 Windows Phone 支持。
选择“声明”选项卡。
从下拉列表中选择“文件类型关联”****,然后单击“添加”。
输入
alsdk
作为“名称”****。输入
.alsdk
作为“文件类型”。输入“images\Icon.png”作为“徽标”****。
按 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)。
步骤 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)。
相关主题
概念
任务
指南
参考