(Любой) прослушиватель папок для приложения UWP - PullRequest
0 голосов
/ 21 октября 2019

Мне нужно получить доступ к случайным папкам где-нибудь в моей локальной файловой системе.

UWP обычно не имеет к ним доступа, и подход с установкой "broadFileSystemAccess" не работает, к сожалению.

Какой подход был бы хорошим для доступа к этим папкам и файлам в моем приложении UWP? Я думал о создании небольшого приложения WPF, которое копирует эти файлы из случайной папки в папку, к которой у моего приложения UWP будет доступ.

Редактировать : проблема в том, что яхотите один раз установить путь на новом устройстве, и он должен сохранить доступ к папке даже после перезагрузки. Возможно ли это с помощью решения FilePicker? Мне удалось заставить работать broadFileSystemAccess, но проблема здесь в том, что на каждом устройстве необходимо сначала включить это вручную для этого приложения. К сожалению, это не вариант, потому что это приложение будет работать на многих клиентских устройствах.

Я благодарен за любые советы.

С уважением

1 Ответ

0 голосов
/ 22 октября 2019

Вы можете использовать FileOpenPicker для доступа к локальному расположению, например, используя FileOpenPicker access PictureLibrary. Для получения дополнительной информации о FileOpenPicke вы можете обратиться к этому документу .

var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".png");

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
    // Application now has read/write access to the picked file
    this.textBlock.Text = "Picked photo: " + file.Name;
}
else
{
    this.textBlock.Text = "Operation cancelled.";
}

Я не знаю, как вы используете возможность broadFileSystemAccess и вызывает это неожиданное поведение. Как правило, возможности broadFileSystemAccess позволяют получить доступ к папкам с помощью StorageFolder() API, например:

StorageFile file = await StorageFile.GetFileFromPathAsync(@"D:\test.txt");

Для получения дополнительной информации о доступе к дополнительным местоположениям вы можете обратиться к этому документу

обновление

Существует способ доступа к локальному местоположению. Вы можете использовать MRU и Future-access list. Например, используйте FileOpenPicker, чтобы получить файл и сохранить этот файл в Future-access list и MRU:

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
string mruToken = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList.Add(file, "20120716");
string faToken = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(file);

Для получения дополнительной информации о MRU и Future-access list, вы можете обратиться к этому документ .

...