Доступ UWP запрещен к StorageFile - PullRequest
       65

Доступ UWP запрещен к StorageFile

0 голосов
/ 04 февраля 2019

Я получаю отказ в доступе при использовании

StorageFile.GetFileFromPathAsync(filePath)

Из других постов и некоторой документации, которую я читаю, UWP может получить доступ только к видеобиблиотеке, видео (папкам, связанным с профилем), когда объявлено в Package.appxmanifest etc ...

С FilePicker у меня нет проблем с доступом к этим местам, но StorageFile.GetFileFromPathAsync заключался в автоматической загрузке этих файлов в список при загрузке страницы.

Как я могу использоватьэта функция для загрузки файлов за пределы известных папок video lib, videos и т. д.

1 Ответ

0 голосов
/ 04 февраля 2019

Этот метод можно использовать только для доступа к файлам на тех безопасных путях, к которым имеют доступ приложения UWP.Если вы получаете доступ к другому местоположению с помощью средства выбора файлов или папок, вы должны кэшировать доступ к нему с помощью Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Этот API позволяет хранить существующий экземпляр StorageFile или StorageFolder и предоставляет вам «токен», который представляет собой string, с помощью которого вы позднее сможете снова получить доступ к выбранному StorageItem.

StorageFile file = await savePicker.PickSaveFileAsync();
if (file != null)
{
    string faToken = StorageApplicationPermissions.FutureAccessList.Add(file);  
}

Теперь, когда файл находится в FutureAccessList, вы можете позже извлечь его:

StorageFile file = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(faToken);

Элементы, сохраненные в FutureAccessList, сохраняются даже при закрытии и повторном открытии приложения, так что это, вероятно, идеальное решение.для вашего случая использования.Однако имейте в виду, что FutureAccessList может хранить не более 1000 элементов (см. Документы ), и вы должны поддерживать его - поэтому, если вам больше не нужен элемент, обязательно удалите его, чтобы онбольше не учитывается в пределе.

Вторым решением было бы объявить возможность broadFileSystemAccess .Однако это ограниченная возможность, и у вашего приложения должна быть веская причина для ее использования.

...