You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何实现无需用户交互自动转发收到的短信?

Flutter 接收短信自动转发实现方案

前置准备

你已经实现了短信接收的基础逻辑,现在需要新增短信发送能力,按以下步骤修改即可:

1. 引入短信发送依赖

目前常用的维护中的短信发送库是sms_maintained,在pubspec.yaml的dependencies节点下添加:

dependencies:
  sms_maintained: ^0.2.5

添加后执行flutter pub get安装依赖。

2. 配置平台权限

Android 端配置

在android/app/src/main/AndroidManifest.xml中添加发送短信权限(你应该已经配置了接收短信的权限,这里只需要补发送权限即可):

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

注意安卓6.0及以上版本需要动态申请短信发送权限,你可以配合permission_handler库在应用启动时向用户申请权限。

iOS 端配置

iOS受系统安全限制,无法实现后台自动发送短信,调用发送接口后会自动弹出系统短信发送弹窗,需要用户手动确认后才能发送,无额外权限配置。

3. 修改现有业务代码

修改你现有的短信监听逻辑,在保留Toast提示的同时新增转发逻辑即可,示例代码如下:

// 预定义转发目标手机号
const String forwardTargetPhone = "13800138000";

mymessage() {
  SmsReceiver receiver = new SmsReceiver();
  receiver.onSmsReceived.listen((SmsMessage msg) async {
    // 保留原有Toast展示逻辑
    Fluttertoast.showToast(
        msg: msg.body,
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.BOTTOM,
        timeInSecForIosWeb: 1,
        backgroundColor: Colors.red,
        textColor: Colors.white,
        fontSize: 16.0
    );
    // 新增短信转发逻辑
    SmsSender smsSender = SmsSender();
    SmsMessage forwardMessage = SmsMessage(
      forwardTargetPhone, 
      // 转发内容可自定义,这里附带了原始发送人号码
      "转发短信:来自${msg.address}\n内容:${msg.body}"
    );
    // 可选:监听短信发送结果
    forwardMessage.onStateChanged.listen((sendState) {
      if (sendState == SmsMessageState.Sent) {
        Fluttertoast.showToast(msg: "短信转发成功");
      } else if (sendState == SmsMessageState.Fail) {
        Fluttertoast.showToast(msg: "短信转发失败,请检查权限");
      }
    });
    smsSender.sendSms(forwardMessage);
  });
}

其他注意事项

  • 部分定制安卓系统会对后台发送短信做风险拦截,可能会弹出提示或者直接拦截发送请求,需要用户手动授权允许应用发送短信。
  • 超过长度的长短信会自动拆分为多条短信发送。

内容的提问来源于stack exchange,提问作者Zu Haib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:15:02