实际上,要以编程方式发送SMS,您需要实现一个平台通道并用于
SMSManager发送SMS。
例:
Android部分:
首先向添加适当的权限
AndroidManifest.xml。
<uses-permission android:name="android.permission.SEND_SMS" />
然后在您的
MainActivity.java:
package com.yourcompany.example;import android.os.Bundle;import android.telephony.SmsManager;import android.util.Log;import io.flutter.app.FlutterActivity;import io.flutter.plugin.common.MethodCall;import io.flutter.plugin.common.MethodChannel;import io.flutter.plugins.GeneratedPluginRegistrant;public class MainActivity extends FlutterActivity { private static final String CHANNEL = "sendSms"; private MethodChannel.Result callResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); GeneratedPluginRegistrant.registerWith(this); new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler( new MethodChannel.MethodCallHandler() { @Override public void onMethodCall(MethodCall call, MethodChannel.Result result) { if(call.method.equals("send")){ String num = call.argument("phone"); String msg = call.argument("msg"); sendSMS(num,msg,result); }else{ result.notImplemented(); } } }); } private void sendSMS(String phoneNo, String msg,MethodChannel.Result result) { try { SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNo, null, msg, null, null); result.success("SMS Sent"); } catch (Exception ex) { ex.printStackTrace(); result.error("Err","Sms Not Sent",""); } }}
飞镖代码:
import 'dart:async';import 'package:flutter/material.dart';import 'package:flutter/widgets.dart';import 'package:flutter/services.dart';void main() { runApp(new MaterialApp( title: "Rotation Demo", home: new SendSms(), ));}class SendSms extends StatefulWidget { @override _SendSmsState createState() => new _SendSmsState();}class _SendSmsState extends State<SendSms> { static const platform = const MethodChannel('sendSms'); Future<Null> sendSms()async { print("SendSMS"); try { final String result = await platform.invokeMethod('send',<String,dynamic>{"phone":"+91XXXXXXXXXX","msg":"Hello! I'm sent programatically."}); //Replace a 'X' with 10 digit phone number print(result); } on PlatformException catch (e) { print(e.toString()); } } @override Widget build(BuildContext context) { return new Material( child: new Container( alignment: Alignment.center, child: new FlatButton(onPressed: () => sendSms(), child: const Text("Send SMS")), ), ); }}
希望这对您有所帮助!
** 注意:
1.示例代码未显示如何在版本
6.0及更高版本的android设备上处理权限。如果用于
6.0实现正确的权限调用代码。
2.在双卡双待手机的情况下,该示例也未实现选择SIM卡。如果在双SIM卡手机上未为短信设置默认SIM卡,则可能不会发送短信。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)