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包来实现拨号或发送短信功能。以下是具体使用方法:
- 添加依赖
在
pubspec.yaml中添加:
dependencies:
url_launcher: ^6.1.0
- 基本使用
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 '无法打开短信应用';
}
}
- 调用示例
ElevatedButton(
onPressed: () => _launchSMS('+1234567890'),
child: Text('发送短信'),
)
注意事项:
- 该功能依赖设备上的默认短信应用
- 不同平台对
body参数支持程度不同(iOS可能不支持预填内容) - 实际效果因设备和操作系统而异
- 需要处理权限(Android可能需要
SEND_SMS权限)
建议在实际使用前测试目标平台的兼容性。

