Сохранение файла с расширением CSV во внешнем хранилище [Xamarin.Froms] - PullRequest
0 голосов
/ 03 марта 2020

У меня есть данные, и я хочу записать их в файл CSV и сохранить их в памяти телефона. Поэтому я написал этот код для сохранения файла.

string csv = Models.CSVHelper.GetCSV<TigerProgram>(item);
        var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 
        "data.csv");
        using (var writer = File.CreateText(path))
        {
             writer.Write(csv);
        }

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

1 Ответ

0 голосов
/ 04 марта 2020

Я использовал Службы зависимостей, чтобы получить путь загрузки из Xamarin. android .Создал интерфейс в Xamarin.Forms и внедрил его в Xamarin. Android Затем разрешил интерфейс и получил путь Вот так

var newPath = Path.Combine(DependencyService.Get<IFileSystem>().GetExternalStorage(), 
"data1.txt");
using (var writer = File.CreateText(path))
{
         writer.Write(csv);
}

Мне также нужно было вызывать этот метод для разрешений в onCreate() основной активности, чтобы разрешить исключение, запрещающее доступ, например:

private void CheckAppPermissions()
    {
        if ((int)Build.VERSION.SdkInt < 23)
        {
            return;
        }
        else
        {
            if (PackageManager.CheckPermission(Manifest.Permission.ReadExternalStorage, PackageName) != Permission.Granted
                && PackageManager.CheckPermission(Manifest.Permission.WriteExternalStorage, PackageName) != Permission.Granted)
            {
                var permissions = new string[] { 
                Manifest.Permission.ReadExternalStorage, Manifest.Permission.WriteExternalStorage };
                RequestPermissions(permissions, 1);
            }
        }
    }

, вызывать его в onCreate() для устранения ошибки разрешения

...