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 卡信息
通过 FlutterNativeSms 的 simInfo() 方法获取当前设备的 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 回复


