2

Я делаю приложение для Windows 10 UWP. В рамках этого приложения мне нужно иметь возможность выполнять поиск в папке «Загрузка файлов пользователя» (не в папке «Службы загрузки»). Я создал подборщик папок для того, чтобы пользователь мог сам выбирать папку для скачивания. Однако, Мне нужно сделать это без пользователя. Вот Моя папка Выбор:Использование FolderPicker Programmatically

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

Есть ли способ, в котором я мог бы использовать что-то вроде папки Picker, но жестко закодирован, поэтому адресат всегда устанавливаются в одном месте (загрузка папка)?

+0

Вы должны иметь привилегию к этой папке, вы можете использовать progarmmatically KnownFolders, в противном случае пользователь должен будет предоставить доступ к вашему приложению с помощью подборщика. Я не уверен, что вы сможете обойти это с помощью официального API. – Romasz

+0

Согласитесь с @Romasz, [DownloadsFolder] (https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.storage.downloadsfolder.aspx) не использует метод поиска файла в DownloadsFolder. Он создает методы файлов. –

+0

@JaydenGu Да, я натолкнулся на ограничение. Я планировал, чтобы пользователи сохраняли свои руководства для загрузки и затем проверяли, существуют ли они, чтобы сохранить их, загружая их снова. Я не хотел сохранять руководства в своей песочнице приложений, так как они также захотят просмотреть их извне приложения. Вернитесь к чертежной доске и найдите другой подход. Спасибо вам за подтверждение, это ценно. –

ответ

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);