我需要在我的应用程序中导入 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
选择 我觉得我错过了一些与我放置的
MIME
/UTType
无关的东西,但到目前为止我找不到任何这样的东西。
如有任何帮助,我们将不胜感激。
这是一个奇怪的问题,即使我也遇到过,在挠头一周后我放弃了(这是去年)。我不知道这仍然是一个问题。无论如何,我建议您在 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。