gpt4 book ai didi

c# - 当我们在 Xamarin.Forms Android 应用程序中将目标 API 版本更改为 26 时无法读取/写入文件

转载 作者:行者123 更新时间:2023-11-29 23:29:08 28 4
gpt4 key购买 nike

我们正在使用 Xamarin Forms 开发适用于 Android 和 iOS 的跨平台应用程序。

自 2018 年 11 月起,所有应用包都必须至少以 API 26 为目标,如果失败,应用将不会上传到 Play 商店。

因此在迁移到 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

所以基本上这只发生在我们使用目标版本作为 API 26 时,如果降低目标版本它工作正常。

因此,请牢记 Google Play 警告至少要以 API 级别 26 为目标,我们需要立即帮助。

提前致谢

最佳答案

所以在搜索了整个互联网并阅读了很多文章之后,对我有帮助的是添加Read/Write Storage Permissions 的Runtime Permissions。这非常令人困惑,因为这些东西在较低的目标 API 级别上工作,比如 API 24。现在我终于可以做事了。

关于c# - 当我们在 Xamarin.Forms Android 应用程序中将目标 API 版本更改为 26 时无法读取/写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52990859/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com