Flutter应用活动启动插件app_activity_launcher的使用

发布于 1周前 作者 eggper 来自 Flutter

Flutter应用活动启动插件app_activity_launcher的使用

app_activity_launcher

app_activity_launcher 是一个用于在Android上启动外部应用程序和活动的Flutter插件。通过此插件,您可以轻松地启动外部应用、启动特定应用内的活动、打开设备的应用商店以获取指定应用,以及向外部应用传递数据。

功能特性

  • 启动外部应用
  • 在特定活动中启动外部应用
  • 打开设备的应用商店以获取指定应用
  • 向外部应用传递额外数据

开始使用

要使用此插件,您需要在 pubspec.yaml 文件中添加依赖项:

dependencies:
  app_activity_launcher: ^0.0.2

启动外部应用

import 'package:app_activity_launcher/app_activity_launcher.dart';

final _app = AppActivityLauncher();

// 启动外部应用
await _app.openApp(appId: "com.example.app"); // 如果有错误,则返回false

在特定活动中启动外部应用

import 'package:app_activity_launcher/app_activity_launcher.dart';

final _app = AppActivityLauncher();

// 在特定活动中启动外部应用
await _app.openActivity(appId: "com.example.app", activity: "MainActivity");

打开设备的应用商店以获取指定应用

import 'package:app_activity_launcher/app_activity_launcher.dart';

final _app = AppActivityLauncher();

// 打开设备的应用商店以获取指定应用
await _app.openMarket(appId: "com.example.app");

向外部应用传递额外数据

import 'package:app_activity_launcher/app_activity_launcher.dart';

final _app = AppActivityLauncher();

// 向外部应用传递额外数据
Map<String, String> extras = {
  "url": "https://example.com/videos/master.mp4"
};

await _app.openActivity(
  appId: "com.example.app", 
  activity: "PlayerActivity", 
  extras: extras
);

完整示例代码

以下是一个完整的示例代码,展示了如何使用 app_activity_launcher 插件来启动外部应用并传递数据。

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:app_activity_launcher/app_activity_launcher.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final _app = AppActivityLauncher();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
          centerTitle: true,
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _openVibePlyr,
            child: const Text("启动VibePlyr"),
          ),
        ),
      ),
    );
  }

  _openVibePlyr() async {
    var res = await _app.openActivity(
        appId: "io.mediaon.vibeplyr",
        activity: "PlayerActivity",
        extras: {
          "url":
              "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/1080/Big_Buck_Bunny_1080_10s_1MB.mp4"
        });
    print(res);
  }
}

更多关于Flutter应用活动启动插件app_activity_launcher的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用活动启动插件app_activity_launcher的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter应用中使用app_activity_launcher插件来启动其他应用的Activity的示例代码。这个插件允许你从Flutter代码中启动Android特定的Activity。

首先,确保你已经在pubspec.yaml文件中添加了app_activity_launcher依赖:

dependencies:
  flutter:
    sdk: flutter
  app_activity_launcher: ^x.y.z  # 替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来,你需要在Android项目中配置你想要启动的Activity。假设你有一个自定义的Activity MyCustomActivity,并且这个Activity在AndroidManifest.xml中声明如下:

<activity android:name=".MyCustomActivity">
    <intent-filter>
        <action android:name="com.example.MY_CUSTOM_ACTION" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

现在,你可以在Flutter代码中使用app_activity_launcher来启动这个Activity。以下是一个完整的示例:

import 'package:flutter/material.dart';
import 'package:app_activity_launcher/app_activity_launcher.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('App Activity Launcher Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _launchMyCustomActivity,
            child: Text('Launch MyCustomActivity'),
          ),
        ),
      ),
    );
  }

  Future<void> _launchMyCustomActivity() async {
    try {
      final result = await AppActivityLauncher.startActivity(
        androidPackageName: 'com.example.yourapp', // 替换为你的应用包名
        androidClassName: 'com.example.yourapp.MyCustomActivity', // 替换为你的Activity完整类名
        action: 'com.example.MY_CUSTOM_ACTION', // 替换为你的intent-filter中的action
        // 你可以添加额外的数据,如果需要的话
        // data: Uri.parse('some_uri'),
        // extras: {
        //   'key': 'value',
        // },
      );

      // 处理启动结果(如果有返回结果的话)
      print('Activity launched with result: $result');
    } catch (e) {
      // 处理错误
      print('Failed to launch activity: $e');
    }
  }
}

在这个示例中:

  • androidPackageName 是你的应用的包名。
  • androidClassName 是你想要启动的Activity的完整类名(包括包名)。
  • action 是与你在AndroidManifest.xml中声明的intent-filter中的action相匹配的字符串。

请注意,AppActivityLauncher.startActivity方法返回一个Future,这意味着启动Activity是一个异步操作。如果Activity有返回结果,你可以通过result变量来处理这些结果(具体取决于你的Activity如何处理返回结果)。

确保在实际应用中替换示例代码中的包名和类名为你自己的值。此外,如果你的Activity需要额外的数据(如extras),你可以在startActivity方法的参数中添加这些数据。

回到顶部