与文件选取器合约集成(Windows 运行时应用)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
应用可以使用文件选取器通过分别与“文件打开选取器”合约、“文件保存选取器”合约以及“缓存文件更新程序”合约集成,为其他应用提供文件、保存位置,甚至是文件更新。
文件选取器的工作原理
通过文件选取器,你的应用可以在用户的整个系统上获得对文件和文件夹的访问。当你调用文件选取器时,用户可以浏览其系统和其他应用来选择文件(或文件夹)。在用户选取文件或文件夹之后,你的应用将这些选取作为 StorageFile 和 StorageFolder 对象进行接收。接着你的应用可以通过使用这些对象在选取的文件和文件夹上操作。若要了解有关访问文件的详细信息,请参阅文件访问和权限。
还可以使用文件选取器让用户通过文件选取器从应用中选择文件和文件夹。通过文件选取器从应用选取的文件与文件系统中的文件处理方式类似:它们是作为 StorageFile 对象返回的。这样,用户便可以从应用中选取文件来在另一个应用中进行操作。例如,如果应用为照片库,那么你可能希望在库中提供图片以便用户可以使用应用来选择在照片编辑器中修改的照片。
如果你希望应用提供对文件、保存位置和/或其他应用的文件更新的访问,你的应用必须参与相关联的应用合约,如“文件保存选取器”合约、“文件打开选取器”合约以及“缓存文件更新程序”合约。你可以通过以下方式参与这些合约:在应用部件清单 (manifest) 中添加这些合约并向应用中添加 UI 或代码以与合约集成。
下图显示文件选取器如何工作以将诸如照片编辑器(调用的应用)之类的应用与库应用(提供的应用)提供的文件连接,以便用户可以从库应用中选择文件。
参与文件选取器应用合约
了解操作方法: 快速入门:使用文件选取器提供对文件的访问
参考: Windows.Storage.Pickers.Provider namespace
示例: 文件选取器合约示例
提供对文件的访问
如果应用有一个对文件的唯一的和/或有价值的显示,或者如果用户无法以另一种方式轻松访问这些文件,请考虑使用文件选取器将文件提供给其他应用。可以通过参与“文件打开选取器”合约,让用户浏览和选取由你的应用通过文件选取器窗口提供的文件。如果应用参与此合约,则用户将能够从位于文件选取器上下黑边左上部分的位置列表中选择该应用。当用户选择应用时,文件选取器将加载对上下黑边所做的所有修改,并加载设计用于显示文件以供用户浏览和选取的页面。
此屏幕截图已进行修改以强调文件选取器窗口的中心区域并为其贴上标签,从而显示将加载应用的文件显示页面的位置。 |
音乐应用可能会让用户按艺术家或唱片标题浏览和选取文件,而不考虑文件在用户的系统上是如何组织的。或者某个照片库应用可能会让用户浏览和选取不在用户系统上的文件,这些文件是由诸如 Facebook 或 Flickr 等 Web 服务承载的。
如果不希望让用户通过文件选取器窗口使用应用浏览和选取文件,则也可以选择让用户通过与“共享源”合约集成从该应用共享文件。若要了解有关与“共享源”合约集成的详细信息,请参阅如何共享文件。
提供保存位置
如果你的应用将用户连接到承载其文件的某个服务,或者如果期望用户需要保存许多文件以便以后在你的应用中打开和处理这些文件,请考虑使用文件选取器提供你的应用,将其作为用户可以保存文件的位置。可以通过参与“文件保存选取器”合约,让用户将文件保存到你的应用中。如果你的应用参与此合约,则当用户使用文件选取器保存文件时,用户可以从位于文件选取器上下黑边左上部分的位置列表中选择你的应用。当用户选择应用时,文件选取器将加载设计用于向用户显示该应用的保存位置(包括现有文件和/或子文件夹,如果存在的话)的页面。
此屏幕截图已进行修改以强调文件选取器窗口的中心区域并为其贴上标签,从而显示将加载页面的位置,该页面显示你的应用的保存位置(Microsoft OneDrive 的应用页面显示在屏幕截图中)。 |
使用由 Facebook 或 OneDrive 托管的文件联系用户的应用可能会让用户将应用用作保存位置,以便用户可以轻松上载要托管的文件。或者让用户编辑音频文件的应用可能会让用户将应用用作保存位置,以便用户可以创建一个音频文件队列,他们希望在下次打开该编辑器时编辑这些文件。
当用户使用文件和文件夹时,让其他应用将你的应用用作文件保存位置非常有意义。它对于较小的数据集(如 URL 或文本选区)来说不太直观。在这些情况下,“共享”超级按钮或复制和粘贴命令是更好的选择。也就是说,在许多情况下,既支持“共享”超级按钮又支持保存操作非常有意义。例如,考虑希望使用云存储服务(如 OneDrive)存储文件的用户。在这种情况下,“共享”超级按钮和保存操作是同样有效的方法。最后,你需要考虑用户如何与你的应用交互,支持与用户的期望相匹配的合约和功能,并提供最佳的总体体验。若要了解有关与共享目标协定集成的详细信息,请参阅快速入门:接收共享内容。若要了解有关使用复制和粘贴命令的详细信息,请参阅快速入门:剪贴板基础知识。
提示 如果应用充当保存位置,则还应通过参与“文件打开选取器”合约来提供对该应用的文件的访问。
提供对文件的实时更新
如果应用用于连接到和/或管理用户文件的中央存储库,请考虑提供文件更新。如果参与“缓存文件更新程序”合约,则应用既可以对应用存储库中的文件执行更新,又可以为存储库中本地版本的文件提供更新。如果应用参与此合约,并遇到需要用户干预的更新,则文件选取器将加载设计用于从用户收集所需信息的页面。
诸如 OneDrive 或 DropBox 等的远程存储应用可能会对文件的本地版本提供更新,以确保用户在其存储库中看到文件的最新版本,或者该应用可能会在存储库中某个文件上执行更新(如果用户保存了较新版本)。
提示 如果应用提供文件更新,则还应通过分别参与“文件保存选取器”合约和“文件打开选取器”合约来提供保存位置和对文件的访问。
相关主题
示例
参考
Windows.Storage.AccessCache namespace
Windows.Storage.Pickers namespace
Windows.Storage.Pickers.fileOpenPicker class
Windows.Storage.Pickers.fileSavePicker class
Windows.Storage.Pickers.Provider namespace
共享
使用文件选取器