【问题标题】:External storage in xamarin formsxamarin 形式的外部存储
【发布时间】:2021-04-06 14:04:24
【问题描述】:

我试图在 xamarin 表单中创建一个 excel 文件,用一些用户生成的数据填充该文件并将该 excel 文件保存在用户的设备上,以便他们可以与其他应用程序共享它(在我的情况下是 google drive)。

我已经查看了 microsoft 的文档,但它并没有真正帮助。

这是我使用的路径:

  string filepath =  System.Environment.GetFolderPath(Environment.SpecialFolder.Personal);

也试过

string filepath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);

但是当我执行程序时它会中断并说拒绝访问路径。我多次搜索错误但找不到适合我的解决方案。 是的,我已经启用了对外部存储权限的读写。 请帮我。 如果有人对在 xamarin 中创建 excel 文件有帮助的建议

【问题讨论】:

  • 如果要访问android 6以上版本设备的存储,我们需要在存储数据之前检查运行时权限。在这里您需要检查“存储”运行时权限。
  • @Deepakkumar 该应用程序的目标平台是 andriod 8 及更高版本,因此此信息不适用于我,但请指导我如何在 vs2019 xamarin 表单中访问运行时权限,谢谢您的回复

标签: c# visual-studio xamarin.forms


【解决方案1】:

Xamarin.Essentials 提供了检查和请求运行时权限的能力。您不要再次请求运行时权限。检查 MS 文档。 https://docs.microsoft.com/en-us/xamarin/essentials/permissions?tabs=ios

我使用 Xamarin.Essentials 1.6.1 进行了测试。

//write

 string text = "12345";
        var path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "excel.xlsx");
        using (var writer = File.CreateText(path))
        {
            await writer.WriteLineAsync(text);
        }

//read

 public async Task<string> ReadAsync()
    {
        var backingFile = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "excel.xlsx");

        if (backingFile == null || !File.Exists(backingFile))
        {
            return null;
        }

        var text = string.Empty;
        using (var reader = new StreamReader(backingFile, true))
        {

            var str = await reader.ReadToEndAsync();

            text = str;

        }

        return text;
    }

【讨论】:

  • 非常非常感谢!只是一个问题,这听起来可能很愚蠢,但是文件将保存在我的设备/模拟器的哪个位置?我好像没找到
  • 我只是试图写一个文件并得到一个错误,我认为我错过了一个包但 vs 并没有真正指定?它说无法解析系统引用请添加 nuget 包或程序集引用(我确实安装并引用了 xamarin 必需品)
  • Xamarin.Essentials 作为 NuGet 包提供,并包含在 Visual Studio 中的每个新项目中。如果找不到,请自行从 NuGet 安装。 nuget.org/packages/Xamarin.Essentials
  • Environment.SpecialFolder.Personal 是内部存储。 docs.microsoft.com/en-us/xamarin/android/platform/files 在内部存储中,没有 root 权限是看不到文件的。如果你想查看它,你可以使用 adb 工具。请检查链接中的方式。 stackoverflow.com/questions/56966590/…
  • 仍然出现相同的错误.... xamarin essentails 已安装并引用.. 在项目本身中我没有错误,但只要我运行应用程序并单击按钮保存文件,程序中断,并给我前面提到的错误,请帮助我
猜你喜欢
  • 2022-08-16
  • 2021-09-05
  • 2018-01-28
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多