使用时我被拒绝访问
StorageFile.GetFileFromPathAsync(filePath)
在我阅读过UWP的其他文章和一些文档中,只有在Package.appxmanifest
等中声明时,才能访问视频库,视频和(与配置文件相关的文件夹)...
使用FilePicker,我可以毫无疑问地访问这些位置,但是StorageFile.GetFileFromPathAsync
是在页面加载时自动将这些文件加载到列表中。
如何使用此功能在已知文件夹(视频库,视频等)之外加载文件。
答案 0 :(得分: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个项目(请参见Docs),并且必须对其进行维护-因此,如果不再需要某个项目,请确保将其删除,以便将其删除不再计入限制。
第二种解决方法是声明broadFileSystemAccess
capability。但是,这是一项受限制的功能,您的应用必须有充分的理由使用它。