1

我正在尝试在 Flutter 中实现 open with 功能,该功能允许用户选择应用程序来打开文件,并且在 iOS/Android 中都可以使用。

在此处输入图像描述

我面临的问题是我需要从设备中获取已安装的应用程序,而我发现的插件在 IOS 中不起作用。

这些插件允许我安装应用程序,但它们仅适用于 Android。

这可能适用于打开应用程序,但我需要确切的名称。

4

2 回答 2

1

与 Android 不同,Apple 不提供 API 来获取兼容的应用程序。您将需要进行实施以显示可用的应用程序并自己启动它们。就我个人而言,我已经做过类似的事情来打开 Apple Plans 以外的其他地图应用程序,所以这绝对是可能的。

您可以通过使用包url_launcher及其方法canLaunch通过尝试启动应用程序的 URL 方案来检查特定应用程序是否可用。例如,Google Drive 具有 URL 方案googledrive://,因此如果我想检查 Google Drive 的可用性,我需要执行以下操作:

import 'package:url_launcher/url_launcher.dart';

bool isAvailable = await canLaunch('googledrive://');

然后我可以使用带有所需参数的相同 URL 方案打开它:

import 'package:url_launcher/url_launcher.dart';

await launch('googledrive://docs.google.com/document/<my_document_url>');

但是您需要自己定义应用程序中支持的所有应用程序,并且必须根据可用的应用程序在 Flutter 中动态创建选择模式。

于 2021-07-13T08:04:48.307 回答
0

我想我已经找到答案了,插件open_file同时支持Android和iOS以及多种文件扩展名,你只需要指定文件的路径,它会用默认的应用程序打开,如果你有多个应用程序能够打开文件,操作系统将显示应用程序的“打开方式”对话框。

在此处输入图像描述

于 2021-07-13T13:24:42.860 回答