我想使用Firebase中的链接数据打开一堆音乐应用程序链接。我要打开AmazonPrimeMusic,Ganna,Spotify,Wynk,JioSavaan来命名。
Dockerfile
当我点击列表中的按钮时,它应该打开链接所针对的特定应用程序,例如对于AmazonPrimeMusic链接,它应该打开Amazon音乐应用程序。
答案 0 :(得分:3)
要在 Flutter 中实现此功能,请创建原生平台集成,或使用现有插件,例如 external_app_launcher。
external_app_launcher
Flutter 插件可帮助您从您的应用中打开另一个应用
将此添加到包的 pubspec.yaml 文件中:
dependencies:
external_app_launcher: ^0.0.1 // add letest version
导入你的 Dart 代码,你可以使用:
import 'package:external_app_launcher/external_app_launcher.dart';
入门
用于在 android 中打开应用
要从您的应用在 android 中打开外部应用,您需要提供应用的 packageName。
如果插件在设备中找到该应用程序,它将被打开,但如果该应用程序未安装在设备中,则它会让用户访问该应用程序的 Playstore 链接。
<块引用>但如果您不想在未安装应用的情况下导航到 Playstore,请将 openStore
属性设为 false
。
用于在 ios 中打开应用
在 Ios 中,要从您的应用打开外部应用,您需要提供目标应用的 URLscheme。
在你的部署目标大于等于 9 时还需要更新 infoPlist 中的外部应用信息。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>pulsesecure</string> // url scheme name of the app
</array>
但就像在 Android 中一样,如果在设备中找不到应用,它不会导航到 store(appStore)。
为此,您需要提供应用程序的 iTunes 链接。
有关入门的更多信息:https://pub.dev/packages/external_app_launcher#getting-started
代码说明
import 'package:flutter/material.dart';
import 'package:external_app_launcher/external_app_launcher. dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
}
Color containerColor = Colors.red;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Container(
height: 50,
width: 150,
child: RaisedButton(
color: Colors.blue,
onPressed: () async {
await LaunchApp.openApp(
androidPackageName: 'net.pulsesecure. pulsesecure',
iosUrlScheme: 'pulsesecure://',
appStoreLink:
'itms-apps://itunes.apple.com/us/ app/pulse-secure/id945832041',
// openStore: false
);
// Enter thr package name of the App you want to open and for iOS add the URLscheme to the Info.plist file.
// The second arguments decide wether the app redirects PlayStore or AppStore.
// For testing purpose you can enter com. instagram.android
},
child: Container(
child: Center(
child: Text(
"Open",
textAlign: TextAlign.center,
),
))),
),
),
),
);
}
}
答案 1 :(得分:1)
您可以使用flutter_appavailability软件包。该插件可让您检查是否在移动设备上安装了应用,并可以使用该插件启动应用。
如果已安装,则使用url_launcher在WebView中启动否则打开链接。
答案 2 :(得分:0)
将其添加到依赖项下的pubspec.yaml文件中-
device_apps:
android_intent:
url_launcher:
并将它们添加到顶部-
import 'package:device_apps/device_apps.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:android_intent/android_intent.dart';
这是示例代码-
_openJioSavaan (data) async
{String dt = data['JioSavaan'] as String;
bool isInstalled = await DeviceApps.isAppInstalled('com.jio.media.jiobeats');
if (isInstalled != false)
{
AndroidIntent intent = AndroidIntent(
action: 'action_view',
data: dt
);
await intent.launch();
}
else
{
String url = dt;
if (await canLaunch(url))
await launch(url);
else
throw 'Could not launch $url';
}
}