UWP 访问存储文件被拒绝

UWP Access Denied to StorageFile

我在使用

时被拒绝访问
StorageFile.GetFileFromPathAsync(filePath)

从我阅读的其他帖子和一些文档中,当在 Package.appxmanifest 等中声明时,UWP 只能访问视频库、视频(与配置文件相关的文件夹)...

使用 FilePicker 我可以毫无问题地访问这些位置,但是 StorageFile.GetFileFromPathAsync 是在页面加载时自动将这些文件加载​​到列表中。

如何使用此功能加载已知文件夹视频库、视频等外部文件

您只能使用此方法访问 UWP 应用可以访问的安全路径上的文件。如果您通过文件或文件夹选择器访问另一个位置,则必须使用 Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList 缓存对它的访问。 API 允许您存储 StorageFileStorageFolder 的现有实例,并为您提供一个 "token",这是一个 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 个项目(请参阅 Docs),并且您必须对其进行维护 - 所以如果您不再需要某个项目,请确保将其删除,以便它不再计入限制。

第二种解决方案是声明 broadFileSystemAccess capability。然而,这是一项受限的功能,您的应用必须有充分的理由使用它。