Доступ к файловой системе Xamarin Forms (кроссплатформенный) - PullRequest
0 голосов
/ 20 сентября 2018

Я работаю над кроссплатформенным приложением, которому нужен полный доступ к файловой системе.В конечном итоге я буду ориентироваться на Windows и Mac .

В конечном счете, мне нужно иметь возможность читать / записывать свойства аудиофайлов (автор, жанр и т. Д.)для файлов, расположенных в любом месте системы.

Я установил в приложении UWP значение Широкий доступ к файловой системе в манифесте, но этого, по-видимому, недостаточно: доступ по-прежнему сохраняется.Запрещено.

  • Использование FilePicker подходит для доступа в первый раз, но приложению потребуется доступ на чтение / запись к файлам, а пользователь не выбирает их постоянно

  • Стратегия совместного использования кода - .NET Standard вместо Общий проект

  • Iхочу использовать TagLib для чтения / записи свойств файла (альтернативы приветствуются)
  • Моя тестовая среда - Windows 10 (поэтому я запускаю приложение UWP)
  • Тестовые файлы в настоящее время находятся на рабочем столе

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

Какой будет лучший подход и / или следующие шаги?

Спасибо

1 Ответ

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

Я помню, как где-то видел, что когда вы открываете файл с помощью FilePicker, вы можете сохранить ссылку / путь к файлу в некоторых настройках приложения, так что доступ будет предоставляться автоматически, когда приложение хочет получить к нему доступ без пользователя.

StorageApplicationPermissions.FutureAccessList собственность, возможно, вы хотите.Его можно использовать для получения объекта, представляющего список, который поддерживает приложение, чтобы приложение могло хранить файлы и / или местоположения (например, папки) и легко получать доступ к этим элементам в будущем.Для получения подробной информации, пожалуйста, обратитесь к следующему.

static public string FolderAccessToken { get; set; }
private async void Pick_Button_Click(object sender, RoutedEventArgs e)
{
    var picker = new FolderPicker();
    picker.FileTypeFilter.Add(".xml");        
    var folder = await picker.PickSingleFolderAsync();
    if (folder == null)
    {
        FolderAccessToken = "";
        return;
    }

    FolderAccessToken = StorageApplicationPermissions.FutureAccessList.Add(folder);
}

private async void Get_Button_Click(object sender, RoutedEventArgs e)
{
    var folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(FolderAccessToken);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...