如何解决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 举报,一经查实,本站将立刻删除。