Flutter如何使用sms:<phone number>协议

在Flutter中如何使用sms:<phone number>协议?我想实现点击按钮直接跳转到系统短信应用并预填充电话号码,但不知道该如何实现。试过使用url_launcher插件,但似乎无法正确处理sms协议。请问正确的实现方式是什么?是否需要特定平台配置?

2 回复

在Flutter中,使用sms:<phone number>协议可通过url_launcher包实现。示例代码:

import 'package:url_launcher/url_launcher.dart';
void launchSms(String phone) async {
  final uri = 'sms:$phone';
  if (await canLaunch(uri)) {
    await launch(uri);
  }
}

调用launchSms('123456789')即可打开短信应用并填入号码。

更多关于Flutter如何使用sms:<phone number>协议的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用sms:<phone number>协议可以通过url_launcher包来实现拨号或发送短信功能。以下是具体使用方法:

  1. 添加依赖pubspec.yaml中添加:
dependencies:
  url_launcher: ^6.1.0
  1. 基本使用
import 'package:url_launcher/url_launcher.dart';

// 发送短信(仅填充号码)
_launchSMS(String phoneNumber) async {
  final Uri smsUri = Uri(
    scheme: 'sms',
    path: phoneNumber,
  );
  if (await canLaunchUrl(smsUri)) {
    await launchUrl(smsUri);
  } else {
    throw '无法打开短信应用';
  }
}

// 发送带内容的短信(部分平台支持)
_launchSMSWithBody(String phoneNumber, String body) async {
  final Uri smsUri = Uri(
    scheme: 'sms',
    path: phoneNumber,
    queryParameters: {'body': body},
  );
  if (await canLaunchUrl(smsUri)) {
    await launchUrl(smsUri);
  } else {
    throw '无法打开短信应用';
  }
}
  1. 调用示例
ElevatedButton(
  onPressed: () => _launchSMS('+1234567890'),
  child: Text('发送短信'),
)

注意事项

  • 该功能依赖设备上的默认短信应用
  • 不同平台对body参数支持程度不同(iOS可能不支持预填内容)
  • 实际效果因设备和操作系统而异
  • 需要处理权限(Android可能需要SEND_SMS权限)

建议在实际使用前测试目标平台的兼容性。

回到顶部