首页 > 解决方案 > 在适当的外部地图应用程序中打开 KML/GPX 文件

问题描述

我的 Flutter(Android 和 iOS)应用程序生成 KML 或 GPX 文件,按预期工作。

现在我想添加一个“打开文件”按钮,它应该打开这样一个系统对话框,其中列出了已安装的地图或其他消费应用程序(可以处理此类格式)以供选择。

如何打开此对话框?如何找到与格式相关的应用程序以及如何将文件发送到这些应用程序。我想,有一个插件可以解决这个问题,但找不到。它必须在 Android 和 iOS 上运行,最好有网络支持。

我刚刚看到open_file但我不太确定它是否按预期工作,因为它没有列出对 KML/GPX 的支持。

提前致谢!

标签: androidiosflutterkmlgpx

解决方案


如果你找到了一个开源的Flutter 插件,比如open_file,你可以自己添加 MIME 类型。

对于 KML 格式:https ://en.wikipedia.org/wiki/Keyhole_Markup_Language

对于 GPX 格式:https ://en.wikipedia.org/wiki/GPS_Exchange_Format

由于该软件包是开源的,因此我正在考虑修改代码,因为映射似乎很简单:

https://github.com/crazecoder/open_file/blob/master/ios/Classes/OpenFilePlugin.m

https://github.com/crazecoder/open_file/blob/master/android/src/main/java/com/crazecoder/openfile/OpenFilePlugin.java

您需要分叉项目并添加所需的类型。

或者,您已发布问题单 #116

回购所有者回应的地方

OpenFile.open("/sdcard/example.txt", type: "text/plain", uti: "public.plain-text");

如果可行,请做出回应,因为我不确定这两种不同平台的文件类型(uti与 MIME 类型)是否在 Flutter 中通用,或者您是否有特定于平台的检测代码来正确分配文件类型。


推荐阅读