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

Flutter如何用url_launcher打开带预设内容且无需指定号码的短信?

实现无指定号码但带预设内容的短信启动功能

完全可行,只需要调整短信URI的格式,同时修正你原函数里的一个明显bug(Android分支里错误调用了打电话的URI,不是短信的)。

修改后的实现代码

launchSmsWithPresetContent(BuildContext context) async {
  const presetMessage = "Hello there";
  try {
    if (Platform.isAndroid) {
      // Android 短信URI:不指定号码,仅携带预设内容
      String smsUri = 'sms:?body=${Uri.encodeComponent(presetMessage)}';
      await launchUrl(Uri.parse(smsUri));
    } else if (Platform.isIOS) {
      // iOS 短信URI:不指定号码,仅携带预设内容
      String smsUri = 'sms:&body=${Uri.encodeComponent(presetMessage)}';
      await launchUrl(Uri.parse(smsUri));
    }
  } catch (e) {
    ScaffoldMessenger.of(context).showSnackBar(
      const SnackBar(
        content: Text('启动短信应用失败,请重试!'),
      ),
    );
  }
}

关键调整说明

  • 移除了原函数的phoneNumber参数,因为不需要预先指定收件人
  • 修正Android分支的错误:原代码里误调用了calluri(打电话的URI),现在改为正确启动短信URI
  • 调整URI格式:
    • Android:使用sms:?body=xxx,冒号后直接加?连接body参数,不填号码就会让用户自行选择/输入收件人
    • iOS:使用sms:&body=xxx,冒号后直接加&连接body参数,同样会打开空白收件人、带预设内容的短信编辑界面

使用效果

调用这个函数后,系统自带的短信应用会直接打开,收件人栏为空,用户可以从通讯录选择联系人,或者手动输入电话号码,短信内容栏已经自动填充好预设的文本。

内容的提问来源于stack exchange,提问作者Shashi kumar S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:51:04