如何在没有用户互动的情况下发送短信?

如何在没有用户互动的情况下发送短信?,第1张

如何在没有用户互动的情况下发送短信?

实际上,要以编程方式发送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卡,则可能不会发送短信。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5031656.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存