如何访问用户在我的UWP应用程序的上一个会话中选择的文件或文件夹?

如何访问用户在我的UWP应用程序的上一个会话中选择的文件或文件夹?,uwp,Uwp,我的应用程序要求用户选择一个文件(或整个文件夹),我将从中加载内容。我可以使用FileOpenPicker和FolderPicker类来实现这一点,它工作得很好。问题是,如果用户关闭我的应用程序(或者它被挂起并终止),我将无法访问从选择器返回的存储文件或存储文件夹。我不想让用户再次选择相同的文件或文件夹(那会很烦人) 我曾考虑将文件或文件夹的路径保存到我的设置中,然后稍后使用broadFilesystemAccess功能访问该文件或文件夹,但这是一项受限功能,Microsoft必须批准。有没有更

我的应用程序要求用户选择一个文件(或整个文件夹),我将从中加载内容。我可以使用
FileOpenPicker
FolderPicker
类来实现这一点,它工作得很好。问题是,如果用户关闭我的应用程序(或者它被挂起并终止),我将无法访问从选择器返回的
存储文件
存储文件夹
。我不想让用户再次选择相同的文件或文件夹(那会很烦人)


我曾考虑将文件或文件夹的
路径
保存到我的设置中,然后稍后使用
broadFilesystemAccess
功能访问该文件或文件夹,但这是一项受限功能,Microsoft必须批准。有没有更好的方法来重新打开用户以前在我的应用程序中打开的文件或文件夹?

broadFilesystemAccess功能是而不是一个很好的解决方案,即使是在你只需要访问时,你也不应该要求访问用户的所有文件一个文件,用户可以随时关闭该功能,这意味着您将无法访问文件/文件夹

相反,您应该使用存储,然后在以后检索用户授予您访问权限的任何文件或文件夹。此类还可以记住通过
FileSavePicker
保存的文件,或通过
文件
激活打开的文件(例如,当用户双击Windows资源管理器中的文件时),或通过为您提供磁盘备份的
IStorageItem
的任何其他机制打开的文件

您将
IStorageItem
添加到列表中,并获取一个“令牌”,您可以将其保存在应用程序设置中,然后在将来的任何时间点,您可以使用该令牌再次检索该项目(假设文件未被移动、删除等)


broadFilesystemAccess
功能不是这个问题的好解决方案——即使撇开说当您只需要访问一个文件时,您不应该请求访问用户的所有文件的功能不谈,这是一个用户可以随时关闭的功能,这意味着您将无法访问文件/文件夹

相反,您应该使用存储,然后在以后检索用户授予您访问权限的任何文件或文件夹。此类还可以记住通过
FileSavePicker
保存的文件,或通过
文件
激活打开的文件(例如,当用户双击Windows资源管理器中的文件时),或通过为您提供磁盘备份的
IStorageItem
的任何其他机制打开的文件

您将
IStorageItem
添加到列表中,并获取一个“令牌”,您可以将其保存在应用程序设置中,然后在将来的任何时间点,您可以使用该令牌再次检索该项目(假设文件未被移动、删除等)

// After user has picked file or folder, get the token and then
// store it in your local settings however you want.
var token = StorageApplicationPermissions.FutureAccessList.Add(file);
SaveLastFileUserWasWorkingOnToSettings(token);

// -----

// When your app is launched again, look up the last-opened file in 
// settings and then try to retrieve it.
var token = GetLastFileUserWasWorkingOnFromSettings();
if (StorageApplicationPermissions.FutureAccessList.ContainsItem(token))
{
  var file = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(token);
  // use the file...
}