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 (将#修改为@)