在 Flutter 中有没有一种方法可以显示已安装的应用程序列表以打开在 IOS/Android 中可用的文件?
Is there a way in Flutter to show the list of installed apps to open a file with that works in IOS/Android?
我正在尝试在 flutter 中实现打开功能,允许用户 select 应用程序打开文件,并且在 iOS/Android.[=16= 中都有效]
我面临的问题是我需要从设备获取已安装的应用程序,而我发现的插件在 IOS 中不起作用。
这些插件允许我安装应用程序,但它们只适用于 Android。
这可能适用于打开应用程序,但我需要确切的名称。
与Android相反,Apple 不提供API 来获取兼容的应用程序。您将需要进行实施以显示可用的应用程序并自行启动它们。我个人已经做过类似于打开 Apple Plans 以外的其他地图应用程序的操作,所以这绝对是可能的。
您可以通过使用程序包 url_launcher 及其方法 canLaunch
尝试启动应用程序的 URL 方案来检查特定应用程序是否可用。例如 Google 驱动器有 URL 方案 googledrive://
所以如果我想检查 Google 驱动器的可用性我需要做如下:
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 中动态创建选择模式。
我想我已经找到答案了,插件open_file同时支持Android和iOS以及多种文件扩展名,你只需要指定路径文件,它将使用默认应用程序打开,如果您有多个应用程序可以打开文件,OS 将显示带有应用程序的“打开方式”对话框。
我正在尝试在 flutter 中实现打开功能,允许用户 select 应用程序打开文件,并且在 iOS/Android.[=16= 中都有效]
我面临的问题是我需要从设备获取已安装的应用程序,而我发现的插件在 IOS 中不起作用。
这些插件允许我安装应用程序,但它们只适用于 Android。
这可能适用于打开应用程序,但我需要确切的名称。
与Android相反,Apple 不提供API 来获取兼容的应用程序。您将需要进行实施以显示可用的应用程序并自行启动它们。我个人已经做过类似于打开 Apple Plans 以外的其他地图应用程序的操作,所以这绝对是可能的。
您可以通过使用程序包 url_launcher 及其方法 canLaunch
尝试启动应用程序的 URL 方案来检查特定应用程序是否可用。例如 Google 驱动器有 URL 方案 googledrive://
所以如果我想检查 Google 驱动器的可用性我需要做如下:
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 中动态创建选择模式。
我想我已经找到答案了,插件open_file同时支持Android和iOS以及多种文件扩展名,你只需要指定路径文件,它将使用默认应用程序打开,如果您有多个应用程序可以打开文件,OS 将显示带有应用程序的“打开方式”对话框。