dart 谁能告诉我如何使用Flutter打开另一个应用程序?

lndjwyie  于 2023-06-19  发布在  Flutter
关注(0)|答案(7)|浏览(297)

我想打开一堆音乐应用程序的链接使用链接数据,我在Firebase。我想打开,amazonPrimeMusic,Ganna,Spotify,Wynk,JioSavaan等等。

Widget buildResultCard(data) {
  List items = [Text(data['Ganna']),
    IconButton(icon:Icon(Icons.all_inclusive),
      onPressed: ()=> {Text("Ganna")}
    ),

    Text(data['Wynk']),
    IconButton(icon:Icon(Icons.all_inclusive),
      onPressed: ()=> {Text("Ganna")}
    ),

    Text(data['JioSavaan']),
    IconButton(icon:Icon(Icons.all_inclusive),
      onPressed: ()=> {Text("Ganna")}
    ),

    Text(data['PrimeMusic']),
    IconButton(icon:Icon(Icons.all_inclusive),
      onPressed: ()=> {Text("Ganna")}
    )
  ];

  return ListView.builder(
    padding: EdgeInsets.only(top: 20),
    itemCount: items.length,
    itemBuilder: (BuildContext context, int index) {
      return items[index];
    },
  );
}

当我点击列表中的按钮时,它应该打开链接所在的特定应用程序,例如对于AmazonPrimeMusic链接,它应该打开亚马逊音乐应用程序。

gcuhipw9

gcuhipw91#

将此添加到dependencies下的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';
}
}
bqucvtff

bqucvtff2#

可以使用flutter_appavailability包。这个插件允许你检查一个应用程序是否安装在移动的上,使用这个插件你可以启动一个应用程序。
如果已经安装,则使用url_launcher在WebView中启动其他打开链接。

xvw2m8pv

xvw2m8pv3#

你好,其实你需要两个包。在使用之前检查版本。首先,您需要应用程序的ID。例如,对于facebook lite,id是com.facebook.lite。你可以找到的id,如果你去playstore,点击分享和科普的链接。facebook lite的链接是https://play.google.com/store/apps/details?id=com.facebook.lite从这个你可以很容易地理解id是在“id=”之后。其他app也是一样。
device_apps:^2.1.1 url_launcher:^6.0.3

try {
  ///checks if the app is installed on your mobile device
  bool isInstalled = await DeviceApps.isAppInstalled('si.modula.android.instantheartrate');
  if (isInstalled) {
     DeviceApps.openApp("si.modula.android.instantheartrate");
   } else {
     ///if the app is not installed it lunches google play store so you can install it from there
   launch("market://details?id=" +"si.modula.android.instantheartrate");
   }
} catch (e) {
    print(e);
}

所以上面的代码检查你是否已经安装了应用程序。如果你已经做了,它会午餐的应用程序,如果不是,它会打开谷歌播放商店,所以你可以看到它在那里。它只适用于Android设备。

vwoqyblh

vwoqyblh4#

更新:url_launcher:^6.1.4

void launchAnotherApp() async {
            if (!await launchUrl(Uri.parse("https://www.instagram.com/username/"),
                mode: LaunchMode.externalApplication)) {
              throw 'Could not launch ';
            }
          }

它会打开手机上的另一个应用程序。如果目标应用程序未安装在您的设备上,它将在webview中打开。

fcy6dtqo

fcy6dtqo5#

我想你可以使用external_app_launcher:联系我们
https://pub.dev/packages/external_app_launcher

vsmadaxz

vsmadaxz6#

您可以在external_app_launcher的帮助下轻松完成此操作。

  • 一个Flutter插件,可帮助您从应用程序打开另一个应用程序。软件包要求您输入四个参数,其中两个是必需的。*

示例代码:

RaisedButton(
  color: Colors.blue,
  onPressed: ()  {
    LaunchApp.openApp(
      androidPackageName: 'net.pulsesecure.pulsesecure',
      iosUrlScheme: 'pulsesecure://',
      appStoreLink: 'itms-apps://itunes.apple.com/us/app/pulse-secure/id945832041',
    );
    // Enter the package name of the App you want to open and for iOS add the URLscheme to the Info.plist file.
    // The `openStore` argument decides whether the app redirects to PlayStore or AppStore.
    // For testing purpose you can enter com.instagram.android
  },
  child: Container(
    child: Center(
      child: Text("Open",
        textAlign: TextAlign.center,
      ),
    ),
  ),
)
nkkqxpd9

nkkqxpd97#

您所需要做的就是安装URL启动器和外部应用程序启动器,以防您的用户没有安装应用程序。这样他就可以被重定向到播放商店链接。

import 'package:external_app_launcher/external_app_launcher.dart';
import 'package:url_launcher/url_launcher_string.dart';

onTap: () async {
            var teamsAppUrl = 'msteams:';
            try {
              await launchUrlString(teamsAppUrl); // Attempt to launch the Teams app
            } catch (e) {
              var openAppResult = await LaunchApp.openApp(
                androidPackageName: 'com.microsoft.teams',
                iosUrlScheme: 'msteams:',
              );/
            }
},

相关问题