Как получить доступ к файлам или папкам, которые пользователь выбрал в предыдущем сеансе моего приложения UWP? - PullRequest
0 голосов
/ 07 сентября 2018

Мое приложение просит пользователя выбрать один файл (или целую папку), из которого я буду загружать контент. Я могу использовать классы FileOpenPicker и FolderPicker для этого, и он отлично работает. Проблема в том, что если пользователь закрывает мое приложение (или оно приостанавливается и закрывается), я теряю доступ к StorageFile или StorageFolder, который был возвращен из средства выбора. Я не хочу просить пользователя снова выбрать тот же файл или папку (это будет раздражать).

Я рассмотрел сохранение Path файла или папки в моих настройках, а затем использовал возможность broadFilesystemAccess для доступа к файлу или папке в дальнейшем, но это ограниченная возможность, которую Microsoft должна утвердить. Есть ли лучший способ повторно открыть файлы или папки, которые пользователь ранее открыл в моем приложении?

1 Ответ

0 голосов
/ 07 сентября 2018

Возможность broadFilesystemAccess является , а не хорошим решением этой проблемы - даже если отбросить принцип наименьших привилегий , который говорит, что вам не следует запрашивать доступ к все файлы пользователя, когда вам нужен только доступ к одному файлу, это возможность, которую пользователь может отключить в любое время, то есть вы потеряете доступ к файлам / папкам.

Вместо этого вы должны использовать FutureAccessList для хранения и последующего извлечения любых файлов или папок, к которым у вас есть доступ. Этот класс также может запоминать файлы, сохраненные с помощью FileSavePicker или открытые с помощью активации File (например, когда пользователь дважды щелкает файл в проводнике 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...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...