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

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

StorageFile.GetFileFromPathAsync(filePath)

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

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

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

1 ответ

Решение

Вы можете использовать этот метод только для доступа к файлам на тех безопасных путях, к которым имеют доступ приложения 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 способность Однако это ограниченная возможность, и у вашего приложения должна быть веская причина для ее использования.

Другие вопросы по тегам