处理文件激活

重要的 API

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

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

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

注意 在 UWP 应用中,保留某些 URI 和文件扩展以供内置应用和操作系统使用。 使用保留的 URI 或文件扩展名注册应用的尝试将被忽略。 有关详细信息,请参阅保留的文件和 URI 方案名

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

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

  1. 在解决方案资源管理器中,双击 package.appxmanifest 以打开清单设计器。 选择声明选项卡,并在可用声明下拉列表中,选择文件类型关联,然后单击添加。 有关文件关联使用的标识符的更多详细信息,请参阅编程标识符

    以下是清单设计器中每个可以填写的字段的简短描述:

字段 说明
显示名称 为一组文件类型指定显示名称。 该显示名称用于在“控制面板”上的设置默认程序中标识文件类型。
徽标 指定用于标识桌面上以及“控制面板”的设置默认程序中的文件类型的徽标。 如果不指定徽标,则使用应用程序的小徽标。
信息提示 为一组文件类型指定信息提示。 当用户将光标悬停在此类型的文件的图标上时,将显示此工具提示文本。
名称 为共享相同显示名称、徽标、信息提示和编辑标志的一组文件类型选择一个名称。 选择一个可在整个应用更新期间保持不变的组名称。 注意“名称”必须全部为小写字母。
内容类型 对于特定文件类型,请指定 MIME 内容类型,如 image/jpeg有关允许的内容类型的重要说明:以下是由于被保留或禁止而无法输入到程序包清单中的 MIME 内容类型的字母顺序列表:application/force-downloadapplication/octet-streamapplication/unknownapplication/x-msdownload
文件类型 指定要注册的文件类型,前面带有句点,如“.jpeg”。 保留和禁止的文件类型:请参阅保留 URI 方案名称和文件类型以获取因为被保留或禁止而无法为 UWP 应用注册的内置应用的文件类型的字母顺序列表。
  1. 输入 alsdk 作为 名称
  2. 输入 .alsdk 作为 “文件类型”。
  3. 输入“images\Icon.png”作为徽标。
  4. 按 Ctrl+S 保存对 package.appxmanifest 的更改。

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

      <Extensions>
        <uap:Extension Category="windows.fileTypeAssociation">
          <uap:FileTypeAssociation Name="alsdk">
            <uap:Logo>images\icon.png</uap:Logo>
            <uap:SupportedFileTypes>
              <uap:FileType>.alsdk</uap:FileType>
            </uap:SupportedFileTypes>
          </uap:FileTypeAssociation>
        </uap:Extension>
      </Extensions>

步骤 2:添加适当的图标

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

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

在项目中包含一个 44x44 的图标,以便你的徽标可以显示在这些位置。 匹配应用磁贴徽标的外观,并使用应用的背景色而不是使图标透明。 将徽标扩展到边缘而无需填充。 在白色背景上测试你的图标。 有关图标的更多详细信息,请参阅磁贴和图标资源指南

步骤 3:处理激活的事件

OnFileActivated 事件处理程序接收所有文件激活事件。

protected override void OnFileActivated(FileActivatedEventArgs args)
{
       // TODO: Handle file activation
       // The number of files received is args.Files.Count
       // The name of the first file is args.Files[0].Name
}
Protected Overrides Sub OnFileActivated(ByVal args As Windows.ApplicationModel.Activation.FileActivatedEventArgs)
      ' TODO: Handle file activation
      ' The number of files received is args.Files.Size
      ' The name of the first file is args.Files(0).Name
End Sub
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs const& args)
{
    // TODO: Handle file activation.
    auto numberOfFilesReceived{ args.Files().Size() };
    auto nameOfTheFirstFile{ args.Files().GetAt(0).Name() };
}
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs^ args)
{
    // TODO: Handle file activation
    // The number of files received is args->Files->Size
    // The name of the first file is args->Files->GetAt(0)->Name
}

注意

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

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

通过文件激活启动应用后,应考虑包含可使用户返回到应用顶部页面的 UI。

注解

收到的文件可能来自不受信任的来源。 我们建议在对该文件采取操作之前,先对文件的内容进行验证。

完整示例

概念

任务

指南

参考