微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin.essentials FilePicker 将选定的外部文件复制到缓存文件夹

如何解决Xamarin.essentials FilePicker 将选定的外部文件复制到缓存文件夹

在过去的 2 周里,我已经成功地将 WPF 应用程序转换为 Xamarin.forms android 应用程序。除了一件事外,一切都按预期工作。我已经在网上搜索了几天的解决方案,但找不到可行的解决方案。 这是我当前的设置:

  • Xamarin.Froms 安卓应用
  • 目标安卓版本:Android 10.0
  • 最低安卓版本:安卓 7.0
  • Xamarin.Essentials 版本:1.6.0
  • READ_EXTERNAL_STORAGE 权限
  • WRITE_EXTERNAL_STORAGE 权限

我的应用程序应该能够打开选定的文件,使用 Xamarin.Essientials FilePicker,做一些事情并将文件再次保存到相同的路径。文件选择在以下代码中处理:

        var pickresult = await FilePicker.PickAsync();

        if (pickresult != null)
        {
            try
            {
                var result = await pickresult.OpenReadAsync();
                var reader = new StreamReader(result);
                var jsonstring = reader.ReadToEnd();
                ConfigData = JsonConvert.DeserializeObject<ProjectData>(jsonstring);
                PLC_Data.ProjectLoaded = true;
                L_LoadedProject.Text = pickresult.FileName;

                ProjectData.Filepath = pickresult.FullPath;

                reader.Close();
                result.Close();

                //Load login page
                B_Next.IsEnabled = true;
            }

这就是问题发生的地方。让我一步一步弄清楚发生了什么:

当我检查文件路径时,我得到以下字符串:

"/storage/emulated/0/Android/data/com.FAIS.motorconfigapp/cache/2203693cc04e0be7f4f024d5f9499e13/303bc84665374139b6303c03255e9018/config>json"

因此 FilePicker 将“外部”文件复制到 App 缓存文件夹并从 Apps 缓存文件夹返回文件路径。当我检查这个文件夹时,里面确实有我选择的文件的副本。读取和写入此文件的工作正常。

现在是实际问题: 为什么 FilePicker 将我选择的文件复制到他的缓存文件夹中,我该如何阻止它? 用户应该能够从设备上的任何位置选择一个文件,并在同一位置找到更新的文件

我已经检查了所有设置,我认为一切都应该是正确的,所以我不明白为什么要创建副本。有没有人有想法? 如果您需要更多设置、图片、版本,请询问。

提前致谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。