Ошибка Доступ к пути «/storage/emulated/0/abc.txt» в Xamarin Android запрещен - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь запустить приложение Xamarin для Android на Android 8 API-эмуляторе уровня 26.Это дает исключение, когда я пытаюсь записать журналы в файл.

Исключение:

System.UnauthorizedAccessException: доступ к пути "/ storage / emulated /0 / abc.txt "отказано

Код:

string filename = "abc.txt";
var documentsPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
var filePath = Path.Combine(documentsPath, filename);
using (FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write))
        using (StreamWriter sw = new StreamWriter(fs))
        {
            sw.WriteLine(text);
        }

Я также дал разрешения READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE.

Целевая версия Android: Android 8.0 API, уровень 26, Oreo

Сведения об исключении:

{System.UnauthorizedAccessException: доступпо пути "/storage/emulated/0/NECMobilePos_log21092018.txt" отказано.в System.IO.FileStream..ctor (путь System.String, режим System.IO.FileMode, доступ System.IO.FileAccess, общий ресурс System.IO.FileShare, System.Int32 bufferSize, System.Boolean анонимный, System.IO.Параметры FileOptions) [0x001aa] в /Users/builder/jenkins/workspace/xamarin-android-d15-6/xamarin-android/external/mono/mcs/class/corlib/System.IO/FileStream.cs:239 в системе.IO.FileStream..ctor (путь System.String, режим System.IO.FileMode, доступ System.IO.FileAccess, общий ресурс System.IO.FileShare, буфер System.Int32Size, System.Boolean isAsync, System.Boolean анонимный) [0x00000] в /Users/builder/jenkins/workspace/xamarin-android-d15-6/xamarin-android/external/mono/mcs/class/corlib/System.IO/FileStream.cs:149 в System.IO.FileStream ..ctor (путь System.String, режим System.IO.FileMode, доступ System.IO.FileAccess) [0x00000] в / Users / builder / jenkins / workspace / xamarin-android-d15-6 / xamarin-android / external / mono /mcs / class / corlib / System.IO / FileStream.cs: 86 at (система удаленного взаимодействия-вызова-проверки-оболочки).IO.FileStream..ctor (строка, System.IO.FileMode, System.IO.FileAccess) в NECMobilePOS.Client.DroidLatest.FileLogger_Android.SaveText (System.String filenamePassed, System.String text) [0x000d1] в C: \ABC \ XYZ \ FileLogger_Android.cs: 73}

1 Ответ

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

Для версий> = 23 необходимо предоставить разрешения времени выполнения.Вы можете просмотреть документ по ссылке ниже.

https://blog.xamarin.com/requesting-runtime-permissions-in-android-marshmallow/

Или для тестирования сейчас вы можете перейти к разрешениям приложения и разрешить хранение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...