Мы используем 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, нам нужна немедленная помощь.
Заранее спасибо