Xamarin Open UWP从“文档”库打开文件

时间:2019-01-18 19:32:51

标签: xamarin.forms uwp

我有一个Xamarin UWP应用,正在尝试从当前用户的“文档”库中加载文件。

我了解我需要首先添加文件类型关联声明。我已经完成此操作,文件图标已更改为我的应用程序图标。

然后在应用程序中,我从这里开始使用FilePicker插件...

https://github.com/ArtjomP/FilePicker-Plugin-for-Xamarin-and-Windows

        FileData file = await CrossFilePicker.Current.PickFile();
        Byte[] data = file.DataArray;

我要做的就是浏览并选择文件,但是应用程序崩溃,并在第二行显示访问冲突。

我已在我的UWP清单中添加了以下功能,不确定它们是否与事件相关。

<uap:Capability Name="documentsLibrary" />
<uap:Capability Name="removableStorage" />

如何打开文件?理想情况下,我需要使用一个方便的位置,例如文档库。

尼克。

编辑:

我已经关注了这篇文章,但仍然没有喜悦。

https://www.pmichaels.net/2016/11/11/uwp-accessing-documents-library/

2 个答案:

答案 0 :(得分:2)

编辑:为了清楚起见,我改写了答案,以避免@MickyD在注释中正确指出的某些含义,我也不同意这些含义:

这似乎是程序包中的错误,因为根据其文档无法正常工作,可能要做的一件事情是将问题提交给GitHub,以便由程序包开发人员解决该错误。

另一件事可能是寻找替代方案。您可能会尝试找到其他类似的程序包,看看它们是否有效,我确定可行的替代方法是使用System.Windows.Storage中的本机函数(已得到官方支持)。

答案 1 :(得分:2)

您使用的旧软件包很可能不再受支持。

尝试这个https://github.com/jfversluis/FilePicker-Plugin-for-Xamarin-and-Windows

这很简单,还支持UWP。

样品用量

try
        {
            FileData fileData = await CrossFilePicker.Current.PickFile();
            if (fileData == null)
                return; // user canceled file picking

            string fileName = fileData.FileName;
            string contents = System.Text.Encoding.UTF8.GetString(fileData.DataArray);

            System.Console.WriteLine("File name chosen: " + fileName);
            System.Console.WriteLine("File data: " + contents);
        }
        catch (Exception ex)
        {
            System.Console.WriteLine("Exception choosing file: " + ex.ToString());
        }