Flutter短信发送插件flutter_native_sms的使用

Flutter短信发送插件flutter_native_sms的使用

flutter_native_sms 插件简介

flutter_native_sms 是一个用于在 Flutter 中发送短信并获取 SIM 卡信息的插件。此外,你还可以选择从哪个 SIM 卡发送短信。
注意:此插件仅支持 Android,iOS 目前尚未实现。


使用步骤

1. 导入插件

首先,在 Dart 文件中导入 flutter_native_sms 插件:

import 'package:flutter_native_sms/flutter_native_sms.dart';

2. 添加权限

AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />

你可能还需要请求用户的 SMS 和电话权限,可以使用 permission_handler 插件来实现:

await Permission.sms.request();
await Permission.phone.request();

3. 发送短信

使用 FlutterNativeSms 类发送短信,示例如下:

FlutterNativeSms sms = new FlutterNativeSms();
sms.send(
  phone: '目标手机号码', // 替换为你要发送短信的目标手机号码
  smsBody: '短信内容', // 替换为你想发送的短信内容
  sim: '0', // 选择从哪个 SIM 卡发送短信,默认值为 0(第一个 SIM 卡),如果双卡设备可以设置为 1(第二个 SIM 卡)
);

4. 获取 SIM 卡信息

通过 FlutterNativeSmssimInfo() 方法获取当前设备的 SIM 卡信息:

FlutterNativeSms sms = new FlutterNativeSms();
print(sms.simInfo());
// 输出类似以下内容:
// [
//   {
//     COUNTRY_CODE: 国家代码,
//     PHONE_NUMBER: 手机号码,
//     CARD_ID: 卡 ID,
//     CARRIER_NAME: 运营商名称,
//     DISPLAY_NAME: 自定义 SIM 名称,
//     SIM_SLOT_INDEX: SIM 卡槽位号,
//     SUBSCRIPTION_ID: 订阅 ID,
//   },
// ]

完整示例代码

以下是一个完整的示例代码,展示如何使用 flutter_native_sms 插件发送短信和获取 SIM 卡信息:

import 'package:flutter/material.dart';
import 'package:flutter_native_sms/flutter_native_sms.dart';
import 'package:permission_handler/permission_handler.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 _sendSmsNativelyPlugin = FlutterNativeSms();

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  // 控制器用于输入手机号和短信内容
  TextEditingController _phoneController = TextEditingController();
  TextEditingController _smsBodyController = TextEditingController();
  String sim = '0'; // 默认选择第一个 SIM 卡
  String? _simInfo;

  // 发送短信
  _sendSms() async {
    var result = await _sendSmsNativelyPlugin.send(
      phone: _phoneController.value.text,
      smsBody: _smsBodyController.value.text,
      sim: sim,
    );
    debugPrint(result.toString());
  }

  // 获取 SIM 卡信息
  _getSimInfo() async {
    List result = await _sendSmsNativelyPlugin.simInfo();
    debugPrint(result.toString());
    setState(() {
      _simInfo = result.toString();
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件短信应用'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: [
              // 输入手机号码
              TextField(
                controller: _phoneController,
                decoration: const InputDecoration(label: Text('手机号码')),
              ),
              // 输入短信内容
              TextField(
                controller: _smsBodyController,
                decoration: const InputDecoration(label: Text('短信内容')),
                maxLines: 4,
              ),
              // 选择 SIM 卡
              Padding(
                padding: const EdgeInsets.only(top: 15.0),
                child: DropdownButtonFormField(
                  value: sim,
                  items: const [
                    DropdownMenuItem(
                      value: '0',
                      child: Text('SIM 卡 1'),
                    ),
                    DropdownMenuItem(
                      value: '1',
                      child: Text('SIM 卡 2'),
                    ),
                  ],
                  onChanged: (value) {
                    debugPrint(value);
                    setState(() {
                      sim = value!;
                    });
                  },
                ),
              ),
              // 发送短信按钮
              Center(
                child: ElevatedButton(
                  onPressed: _sendSms,
                  child: const Text('发送'),
                ),
              ),
              // 获取 SIM 卡信息按钮
              Center(
                child: ElevatedButton(
                  onPressed: _getSimInfo,
                  child: const Text('获取 SIM 卡信息...'),
                ),
              ),
              // 显示 SIM 卡信息
              if (_simInfo != null)
                Text(_simInfo!),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter短信发送插件flutter_native_sms的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter短信发送插件flutter_native_sms的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_native_sms 是一个用于在 Flutter 应用中发送短信的插件。它允许你直接从你的应用程序中发送短信,而无需离开应用程序。以下是如何使用 flutter_native_sms 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_native_sms: ^2.0.0

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 flutter_native_sms 插件:

import 'package:flutter_native_sms/flutter_native_sms.dart';

3. 发送短信

你可以使用 FlutterNativeSms 类来发送短信。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Send SMS Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              String phoneNumber = '1234567890'; // 替换为你要发送的号码
              String message = 'Hello, this is a test message.'; // 替换为你要发送的消息

              try {
                // 发送短信
                bool result = await FlutterNativeSms().sendSMS(
                  recipients: [phoneNumber],
                  message: message,
                );

                if (result) {
                  print('SMS sent successfully');
                } else {
                  print('Failed to send SMS');
                }
              } catch (e) {
                print('Error sending SMS: $e');
              }
            },
            child: Text('Send SMS'),
          ),
        ),
      ),
    );
  }
}

4. 权限配置

在 Android 上,发送短信需要 SEND_SMS 权限。你需要在 AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.SEND_SMS"/>
回到顶部