flutter 三种插件,打开外部APP

一、url_launcher插件

可支持iOS和Android,有个缺点就是Android不能指定包名,所以第一次打开会提示选择APP或者浏览器打开,存在歧义对话框,如下图:

注:歧义对话框存在的原因,应该是跳转时没有指定Android的packageName


歧义对话框.png

1.在pubspec.yaml文件添加下面依赖,然后运行flutter pub get

dependencies:
    url_launcher: ^6.1.5

2.在dart文件引入头文件

 import 'package:url_launcher/url_launcher.dart';
  1. 在需要打开外部APP的地方使用 ,会根据url判断在APP还是浏览器打开
if (!await launchUrl(
   url,    
   mode: LaunchMode.externalApplication,  //设置外部浏览器打开
 )) {
   throw 'Could not launch $url';  
 }

二、external_app_launcher插件

可支持iOS和Android,也可以跳转到App Store,有个缺点就是不能传入url,如果用户想跳到指定页面则无法成功,没有歧义对话框

1.在pubspec.yaml文件添加下面依赖,然后运行flutter pub get

dependencies:
   external_app_launcher: ^3.1.0

2.在dart文件引入头文件

 import 'package:external_app_launcher/external_app_launcher.dart';
  1. 在需要打开外部APP的地方使用
var openAppResult = await LaunchApp.openApp(
   androidPackageName: 'com.XXX.app',
   iosUrlScheme: 'XXXX://',
   appStoreLink:
'itms-apps://itunes.apple.com/us/app/pulse-secure/id945832041',
   // openStore: false
);
print(
 'openAppResult => $openAppResult ${openAppResult.runtimeType}');

三、android_intent_plus插件,可以消除歧义对话框

只支持Android,既能指定packageName,也能传入url,可以跳转到指定APP的某个页面,不适用iOS

1.在pubspec.yaml文件添加下面依赖,然后运行flutter pub get

dependencies:
    android_intent_plus: ^3.1.1+1

2.在dart文件引入头文件

import 'package:android_intent_plus/android_intent.dart';
  1. 在需要打开外部APP的地方使用 ,会根据url判断在APP还是浏览器打开
urls = “https:XXXXXXXXXXXXXXX”;
final intent = AndroidIntent(
     action: 'action_view',    
     data: Uri.encodeFull(urls),    
     package: 'com.XXXX.app',    //package Name
      );  
    await intent.launch().catchError((e) {
  throw 'Could not launch $e';  
  });
插件链接如下,可进行深层次研究:

https://pub.dev/packages/url_launcher/example
https://pub.flutter-io.cn/packages/external_app_launcher/example
https://pub.dev/packages/android_intent_plus/example

你可能感兴趣的:(flutter 三种插件,打开外部APP)