【问题标题】:Use FolderPicker Programmatically以编程方式使用 FolderPicker
【发布时间】:2016-05-10 16:26:28
【问题描述】:

我正在制作一个 Windows 10 UWP 应用程序。作为这个应用程序的一部分,我需要能够在用户设备的下载文件夹(不是应用程序下载文件夹)中进行搜索。 我为用户创建了一个文件夹选择器,以便能够自己选择下载文件夹。但是,我需要在没有用户的情况下执行此操作。 这是我的文件夹选择器:

FolderPicker picker = new FolderPicker();
picker.FileTypeFilter.Add("*");
picker.ViewMode = PickerViewMode.List;
picker.SuggestedStartLocation = PickerLocationId.Downloads;
StorageFolder folder = await picker.PickSingleFolderAsync();

有什么方法可以让我使用像文件夹选择器这样的东西,但要硬编码,所以目的地总是设置在一个地方(下载文件夹)?

【问题讨论】:

  • 您需要对该文件夹具有权限,您可以编程方式使用 KnownFolders,否则用户必须通过选取器授予对您应用程序的访问权限。我不确定您是否能够使用官方 API 绕过此问题。
  • 同意@Romasz,DownloadsFolder 不提供在 DownloadsFolder 中搜索文件的方法。它有创建文件方法。
  • @JaydenGu 是的,我遇到了限制。我打算让用户保存他们的手册以供下载,然后检查它们是否存在以保存他们再次下载它们。我不想将手册保存在我的 App Sandbox 中,因为他们还想在应用程序外部查看它们。回到绘图板并寻找另一种方法。感谢您的确认。
  • @JamesTordoff 只需添加-一旦用户通过选择器选择文件夹一次,您甚至可以通过编程方式访问它-无需再次使用选择器。
  • @Romasz 我不知道,我学到了一些新东西。不幸的是,我不需要使用任何选择器。我相信您告诉我的内容将来会派上用场,非常感谢!您知道文件等文件夹是否适用与下载文件夹相同的限制?

标签: c# win-universal-app windows-10-universal file-access filepicker


【解决方案1】:

您不能搜索“下载”文件夹,但如果您只想重新访问之前下载的文件,您可以使用FutureAccessList

using Windows.Storage.AccessCache;

file = await DownloadsFolder.CreateFileAsync(...);
var token = StorageApplicationPermissions.FutureAccessList.Add(file,
                                           "anything you like goes here");

您可能希望将令牌保存在应用的本地存储中,以免忘记它。

以后使用token 重新获得对该文件的访问权限。

file = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(token);

【讨论】:

    猜你喜欢
    • 2012-01-25
    • 2012-06-15
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多