Flutter/Firebase/url_launcher/ 如何从应用程序发送短信?
Posted
技术标签:
【中文标题】Flutter/Firebase/url_launcher/ 如何从应用程序发送短信?【英文标题】:Flutter/Firebase/url_launcher/ how to send SMS message from the app? 【发布时间】:2021-03-25 15:04:01 【问题描述】:我正在使用 Flutter 开发移动应用。
我只是想知道如何从应用程序发送 SMS 消息。
NewCustomIconButton(
text: 'SMS',
icon: Icons.sms,
onPressed: () async
await Clipboard.setData(ClipboardData(
text:
"Hello, $confirmedBooking.userAccountID, you have booking with $_artistAccount.getFullname(), "));
UrlLauncher.launch(
"sms://$confirmedBooking.phoneNumber");
,
),
)
在这段代码中,如果我按下按钮,它会在我的手机上进入短信屏幕,但是,我只是想知道是否可以在不手动输入文本的情况下发送短信。
感谢阅读,
我在等你的帮助。
【问题讨论】:
【参考方案1】:如果您想直接从代码中发送SMS
,您可以使用sms 包:
注意:sms
软件包目前仅支持 android
import 'package:sms/sms.dart';
SmsSender sender = new SmsSender();
String address = someAddress();
SmsMessage message = new SmsMessage(address, 'Hello from Flutter!');
message.onStateChanged.listen((state)
if (state == SmsMessageState.Sent)
print("SMS is sent");
else if (state == SmsMessageState.Delivered)
print("SMS is delivered");
);
sender.sendSms(message);
如果您想打开预先填充指定内容和收件人的新SMS
消息,可以通过启动以下URI
来实现:
sms://$confirmedBooking.phoneNumber?body=$messageBody
记得对String
进行编码以获得有效的URI
:
String uriAndroid = "sms:$confirmedBooking.phoneNumber?body=$messageBody";
String uriios = "sms:$confirmedBooking.phoneNumber&body=$messageBody";
uriAndroid = Uri.encodeFull(uriAndroid);
uriIOS = Uri.encodeFull(uriIOS); // valid URIs
供参考,根据你的具体场景,遵循完整的代码sn-p:
NewCustomIconButton(
text: 'SMS',
icon: Icons.sms,
onPressed: () async
String smsContent =
"Hello, $confirmedBooking.userAccountID, you have booking with $_artistAccount.getFullname()";
await Clipboard.setData(ClipboardData(
text: smsContent));
String char = Platform.isAndroid ? '?' : '&';
UrlLauncher.launch(
Uri.encodeFull("sms:$phoneNumber$charbody=$smsContent"));
,
),
)
我还建议创建一个可重用的函数:
void createNewSms(String phoneNumber, String smsContent)
String char = Platform.isAndroid ? '?' : '&';
UrlLauncher.launch(
Uri.encodeFull("sms:$phoneNumber$charbody=$smsContent"));
【讨论】:
感谢您的回复,但它实际上无法正常工作。它正在向“1234567890?body=hello,daegil,youhavebookingwithemiendo”这个号码发送消息。 onPressed: () async String messageBody = "您好,$confirmedBooking.userAccountID,您已使用 $_artistAccount.getFullname() 进行预订,"; String uri = "sms://$confirmedBooking.phoneNumber?body=$messageBody"; UrlLauncher.launch(Uri.encodeFull(uri)); , 我已经更新了代码来解决这个问题! 非常感谢,真的很有用!然而,这实际上并不是我要问的。我实际上是在询问在 App 中发送 SMS 消息,它也与正文消息一起进入消息屏幕,我也必须手动按下发送按钮。我认为我想要的在技术上是不可能的:)。感谢您的帮助。 乐于助人!我修改了答案以包含新发现,包括直接从应用程序(在 Android 上)发送 SMS 的方法。如果这有帮助,请告诉我以上是关于Flutter/Firebase/url_launcher/ 如何从应用程序发送短信?的主要内容,如果未能解决你的问题,请参考以下文章