Xamarin Essentials 的 FilePicker 不允许在 iOS 上选择任何文件

问题描述 投票:0回答:1

我需要在我的应用程序中导入 CSV/SQLite3 文件以从以前的离线备份恢复设置。我使用

Xamarin.Essentials.FilePicker
,它在 Android 上完美运行,但是在 iOS 上尝试时,所有文件都是灰色的,我无法选择任何文件。

我在 Android 和 iOS 上使用以下文件类型:

var customFileType =
    new Xamarin.Essentials.FilePickerFileType(new Dictionary<Xamarin.Essentials.DevicePlatform, IEnumerable<string>>
    {
        { Xamarin.Essentials.DevicePlatform.iOS, new string[] {
            "public.comma-separated-values-text",
            "text/csv",
            "comma-separated values",
            "CSV document",
            "csv",
            "public.database",
            "application/x-sqlite3",
            "application/vnd.sqlite3",
            "application/octet-stream",
        } },
        { Xamarin.Essentials.DevicePlatform.Android, new string[] {
            "text/csv",
            "Comma-separated values",
            "CSV document",
            "application/x-sqlite3",
            "application/vnd.sqlite3",
            "application/octet-stream"
        } },
    }) ;

我还尝试添加

text/plain
来在 iOS 上选择 CSV 文件,但没有成功。 此外,我尝试使用 pdf 选择
PDF
文件,但没有成功。

我觉得我错过了一些与我放置的

MIME
/
UTType
无关的东西,但到目前为止我找不到任何这样的东西。

如有任何帮助,我们将不胜感激。

xamarin xamarin.forms xamarin.ios xamarin.essentials
1个回答
0
投票

这是一个奇怪的问题,即使我也遇到过,在挠头一周后我放弃了(这是去年)。我不知道这仍然是一个问题。无论如何,我建议您在 Essentials GitHub https://github.com/xamarin/Essentials/issues

中创建一个错误

你可以暂时使用 FilePicker 插件(我仍在使用这个):https://github.com/jfversluis/FilePicker-Plugin-for-Xamarin-and-Windows

然后像这样使用它:

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());
}

该库已被 Gerald Versluis(所有者)标记为已弃用,但如果将来需要,他可能仍会接受 PR。

© www.soinside.com 2019 - 2024. All rights reserved.