Возможность 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...
}