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

马希

我实际上是在尝试从我的Flutter应用发送短信,而无需用户进行交互。我知道我可以使用url_launcher启动SMS应用程序,但实际上我想发送没有用户交互的SMS或从我的flutter应用程序启动SMS。

请有人告诉我是否可行。

非常感谢,Mahi

赫曼思·拉吉

实际上,以编程方式发送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卡手机上未为短信设置默认SIM卡,则可能不会发送短信。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在没有用户注册电子邮件的情况下发送通知

在没有用户交互的情况下发送电子邮件-Android Studio

有没有办法在没有用户交互的情况下以短信方式发送SMS?

如何在没有MFMessageComposeViewController的情况下发送和接收短信?

如何在没有用户交互的情况下在Android中发送电子邮件?

如何在没有用户通过的情况下获取“ ID”

如何在没有用户的情况下获得访问权限

如何在没有用户交互的情况下以编程方式构建VI?

如何在没有用户单击的情况下单击JButton?

如何在没有用户名的情况下正确实现UserDetailsService?

如何在没有用户交互的情况下禁用wifi辅助

如何在没有用户确认的情况下使用force adb进行备份?

如何在没有用户 ID 的情况下在 Firestore 中存储设备令牌?

如何在没有用户交互的情况下初始化全屏

如何在没有用户交互的情况下安装Microsoft Edge扩展?

如何在没有用户交互的情况下显示模式QDialog?

如何在没有用户密码的情况下打开Fedora?

如何在没有用户输入的情况下使用书签?

laravel 4:如何在没有用户名和密码的情况下登录用户

如何在没有用户实例的情况下获取 Active Directory 用户对象类的属性名称?

在没有用户消息的情况下向 Discord 频道发送消息

如何在没有用户(只有root)的情况下登录通用Linux发行版?

在没有用户的情况下创建会话

如何在没有用户干预的情况下执行G Suite域范围的授权?

Android中如何在没有用户交互的情况下务实地接听接收方电话

JSF / Seam:如何在没有用户干预的情况下下载和打印动态生成的PDF文件?

如何在没有用户提示UWP C#的情况下添加到日历

如何在没有用户名和密码的情况下生成access_token

如何在没有用户输入密码的情况下用C#加密和解密敏感信息