Flutter安卓意图调用插件tengits_android_intent的使用

Flutter安卓意图调用插件tengits_android_intent的使用

tengits_android_intent

tengits_android_intent 是一个用于在 Flutter 中调用 Android 意图(Intent)的插件。它允许开发者通过 Flutter 调用 Android 的原生功能。


使用步骤

1. 添加依赖

pubspec.yaml 文件中添加以下依赖:

dependencies:
  tengits_android_intent: ^0.1.0 # 请根据实际版本号进行调整

然后运行以下命令以更新依赖:

flutter pub get

2. 初始化插件

main.dart 文件中初始化插件并设置状态管理。

完整示例代码

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

import 'package:flutter/services.dart';
import 'package:tengits_android_intent/flag.dart';
import 'package:tengits_android_intent/tengits_android_intent.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown'; // 平台版本信息

  @override
  void initState() {
    super.initState();
    initPlatformState(); // 初始化平台状态
  }

  // 初始化平台状态
  Future<void> initPlatformState() async {
    String platformVersion;
    try {
      platformVersion = await TengitsAndroidIntent.getPlatformVersion();
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('tengits_android_intent 示例'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                '运行环境: $_platformVersion',
                style: TextStyle(fontSize: 18),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () {
                  // 打开华为系统管理应用
                  TengitsAndroidIntent(
                    package: "com.huawei.systemmanager", // 目标包名
                    isLaunch: true, // 是否启动目标应用
                  ).launch();
                },
                child: const Text('打开华为系统管理应用'),
                style: ButtonStyle(
                  backgroundColor: MaterialStateProperty.all(Colors.blue),
                  foregroundColor: MaterialStateProperty.all(Colors.white),
                ),
              ),
              SizedBox(height: 10),
              ElevatedButton(
                onPressed: () {
                  // 打开拨号界面并拨打指定号码
                  TengitsAndroidIntent(
                    action: "android.intent.action.DIAL",
                    data: "tel:1234567890",
                  ).launch();
                },
                child: const Text('拨打指定电话号码'),
                style: ButtonStyle(
                  backgroundColor: MaterialStateProperty.all(Colors.green),
                  foregroundColor: MaterialStateProperty.all(Colors.white),
                ),
              ),
              SizedBox(height: 10),
              ElevatedButton(
                onPressed: () {
                  // 打开浏览器并访问指定URL
                  TengitsAndroidIntent(
                    action: "android.intent.action.VIEW",
                    data: "https://www.example.com",
                  ).launch();
                },
                child: const Text('打开指定网页'),
                style: ButtonStyle(
                  backgroundColor: MaterialStateProperty.all(Colors.orange),
                  foregroundColor: MaterialStateProperty.all(Colors.white),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

功能说明

1. 打开指定应用

通过 package 参数指定目标应用的包名,并设置 isLaunchtrue 来启动该应用。

TengitsAndroidIntent(
  package: "com.huawei.systemmanager", // 目标应用包名
  isLaunch: true, // 启动目标应用
).launch();

2. 打开拨号界面并拨打指定号码

通过 actiondata 参数指定拨号操作,并传入电话号码。

TengitsAndroidIntent(
  action: "android.intent.action.DIAL",
  data: "tel:1234567890", // 拨打的电话号码
).launch();

3. 打开浏览器并访问指定URL

通过 actiondata 参数指定网页浏览操作,并传入目标URL。

TengitsAndroidIntent(
  action: "android.intent.action.VIEW",
  data: "https://www.example.com", // 目标URL
).launch();

更多关于Flutter安卓意图调用插件tengits_android_intent的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter安卓意图调用插件tengits_android_intent的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


tengits_android_intent 是一个 Flutter 插件,用于在 Flutter 应用中调用 Android 的 Intent。通过这个插件,你可以启动 Android 的 Activity、发送广播、打开 URL、拨打电话等操作。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 tengits_android_intent 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  tengits_android_intent: ^0.0.1

然后运行 flutter pub get 来安装插件。

使用插件

1. 导入插件

import 'package:tengits_android_intent/tengits_android_intent.dart';

2. 创建 AndroidIntent 实例

final AndroidIntent intent = AndroidIntent(
  action: 'action_name', // 例如: 'android.intent.action.VIEW'
  data: 'data_url', // 例如: 'https://www.example.com'
  package: 'package_name', // 例如: 'com.example.app'
  arguments: <String, dynamic>{
    'key': 'value', // 传递额外的参数
  },
);

3. 启动 Intent

await intent.launch();

示例

打开网页

void openWebPage() async {
  final AndroidIntent intent = AndroidIntent(
    action: 'android.intent.action.VIEW',
    data: 'https://www.example.com',
  );
  await intent.launch();
}

拨打电话

void makePhoneCall() async {
  final AndroidIntent intent = AndroidIntent(
    action: 'android.intent.action.CALL',
    data: 'tel:1234567890',
  );
  await intent.launch();
}

打开另一个应用

void openAnotherApp() async {
  final AndroidIntent intent = AndroidIntent(
    action: 'android.intent.action.MAIN',
    package: 'com.example.anotherapp',
  );
  await intent.launch();
}

发送广播

void sendBroadcast() async {
  final AndroidIntent intent = AndroidIntent(
    action: 'com.example.broadcast',
    arguments: <String, dynamic>{
      'message': 'Hello from Flutter!',
    },
  );
  await intent.sendBroadcast();
}

注意事项

  1. 权限:某些操作(如拨打电话)需要特定的权限。你需要在 AndroidManifest.xml 中添加相应的权限声明。

    <uses-permission android:name="android.permission.CALL_PHONE" />
    
  2. 错误处理:在实际使用中,建议对 launch() 方法进行错误处理,以捕获可能出现的异常。

    try {
      await intent.launch();
    } catch (e) {
      print('Error launching intent: $e');
    }
回到顶部