谁能告诉我如何使用Flutter打开其他应用?其实我想使用Flutter应用中的音乐链接来打开音乐应用

时间:2019-04-20 07:16:58

标签: dart flutter explicit-intent

我想使用Firebase中的链接数据打开一堆音乐应用程序链接。我要打开AmazonPrimeMusic,Ganna,Spotify,Wynk,JioSavaan来命名。

Dockerfile

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

3 个答案:

答案 0 :(得分:3)

要在 Flutter 中实现此功能,请创建原生平台集成,或使用现有插件,例如 external_app_launcher

external_app_launcher Flutter 插件可帮助您从您的应用中打开另一个应用

  1. 将此添加到包的 pubspec.yaml 文件中:

    dependencies:
       external_app_launcher: ^0.0.1 // add letest version
    
  2. 导入你的 Dart 代码,你可以使用:

    import 'package:external_app_launcher/external_app_launcher.dart';
    
  3. 入门

  • 用于在 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';
}
}