Невозможно читать / записывать файлы, когда мы изменили версию API-интерфейса Target на 26 в приложении Android Xamarin.Forms - PullRequest
0 голосов
/ 25 октября 2018

Мы используем Xamarin Forms для разработки нашего кроссплатформенного приложения для Android и iOS.

С ноября 2018 года обязательно, чтобы все пакеты приложений были ориентированы как минимум на API 26, а в случае сбоя приложенияне будет загружено в Play Store.

Поэтому при переходе на целевую версию API 26 мы сталкиваемся с проблемой чтения / записи файлов в локальное хранилище.

Вот код:

public async Task<string> Get_SavePath(string fileName, MemoryStream stream)
{
    string root = null;
    if (Android.OS.Environment.IsExternalStorageEmulated)
       root = Android.OS.Environment.ExternalStorageDirectory.ToString();
    else
       root = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);

    Java.IO.File myDir = new Java.IO.File(root + "/Signatures");
    myDir.Mkdir();
    Java.IO.File file = new Java.IO.File(myDir, fileName);

    if (file.Exists()) file.Delete();
    try
    {
        FileOutputStream outs = new FileOutputStream(file);
        outs.Write(stream.ToArray());
        outs.Flush();
        outs.Close();
    }
    catch (Exception e) { }

    if (file.Exists())
    {
        Android.Net.Uri path = Android.Net.Uri.FromFile(file);
        string pathString = Android.Net.Uri.FromFile(file).ToString();
        return pathString;
    }
    else
    {
        return "";
    }
}

Строка FileOutputStream outs = new FileOutputStream(file); всегда дает исключение FileNotFoundException .

Так что в основном это происходит только тогда, когда мы используем Target Version в качестве API 26 и если ниже Target Version, то этоработает нормально.

Итак, учитывая предупреждение Google Play, которое предназначено как минимум для API уровня 26, нам нужна немедленная помощь.

Заранее спасибо

1 Ответ

0 голосов
/ 29 октября 2018

Итак, после поиска по всему Интернету и прочтения большого количества статей мне нужно добавить Разрешения времени выполнения для разрешений на чтение / запись для хранения .Это очень сбивало с толку, потому что эти вещи работали на более низком целевом уровне API, скажем, API 24. Теперь, наконец, я могу делать вещи.

...