Permissions 如何保存存储文件以供以后使用?

Permissions 如何保存存储文件以供以后使用?,permissions,windows-8,windows-runtime,storage,Permissions,Windows 8,Windows Runtime,Storage,我在WinRT工作,我有点被卡住了: 我正在写一个具有媒体库功能的音乐播放器。我将音乐信息(如艺术家等)保存在SQLite数据库中。我想让用户把音乐放在任何他想放的地方,而不是用windows的方式,所有的音乐都必须放在“音乐”库中 用户可以使用文件夹选择器将音乐添加到文件夹中。我遇到的问题是:以后如何访问这些文件,例如在应用程序重新启动后 保持路径不起作用,因为我总是收到“拒绝访问”错误。我唯一可以访问这些文件的时间是使用从浏览文件夹中获得的StorageFile对象 如何解决此问题?Wind

我在WinRT工作,我有点被卡住了:

我正在写一个具有媒体库功能的音乐播放器。我将音乐信息(如艺术家等)保存在SQLite数据库中。我想让用户把音乐放在任何他想放的地方,而不是用windows的方式,所有的音乐都必须放在“音乐”库中

用户可以使用文件夹选择器将音乐添加到文件夹中。我遇到的问题是:以后如何访问这些文件,例如在应用程序重新启动后

保持路径不起作用,因为我总是收到“拒绝访问”错误。我唯一可以访问这些文件的时间是使用从浏览文件夹中获得的StorageFile对象


如何解决此问题?

Windows运行时应用程序是沙盒。如果要访问任意文件夹位置,必须使用文件选择器。

如前面给出的注释所示,Windows.Storage.AccessCache(http://msdn.microsoft.com/en-us/library/windows/apps/br230566.aspx)是您需要为此使用的API。但是,使用文件夹选择器并保存StorageFolder对象的权限,而不是保存对每个StorageFile的访问权限(API对这两个对象都有效)。您不太可能达到文件夹的1000项限制。

以在将来访问文件

        string key = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(storageFile);
        //save this key for access file later

        //Access file from saved key
        StorageFile file = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(key);
如果文件太多,可以添加StorageFolder文件

        string key = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(storageFolder);
        StorageFolder folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(key);
然后从父StorageFolder获取StorageFiles

StorageFile childFile = await folder.GetFileAsync("filename");

这将在用户第一次选择文件时起作用。但我如何保存访问该文件的权限?当我将它添加到库中时,我需要能够稍后访问它。我个人没有尝试过这一点,但是您可以使用最近使用的(MRU)列表。查看此链接了解更多信息:上面的链接还提到了一个“未来”访问列表,听起来像是您正在寻找的。是的,谢谢您的链接。不幸的是。。。“futureAccessList最多可容纳1000个项目。”我的音乐收藏约3000首歌曲,因此此限制对我不起作用。因此,你试图绕过个人帐户的限制?不,问题是关于访问稍后使用文件选择器拾取的文件/文件夹(例如,在应用程序关闭后)。文件的路径/uri不够,您将得到一个权限拒绝错误。