在 Android 中,您可以使用 SmsManager API 或设备内置的 SMS 应用程序来发送 SMS。 在本教程中,我们向您展示了发送 SMS 消息的两个基本示例 −

SmsManager API

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("phoneNo", null, "sms message", null, null);
  • 1.
  • 2.

内置短信应用

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "default content"); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);
  • 1.
  • 2.
  • 3.
  • 4.

当然,两者都需要SEND_SMS 权限

<uses-permission android:name="android.permission.SEND_SMS" />
  • 1.

除了上述方法,SmsManager 类中还有一些其他重要的功能可用。 下面列出了这些方法 −

序号

方法 & 描述

1

ArrayList<String> divideMessage(String text)

此方法将消息文本分成几个片段,不大于最大 SMS 消息大小。

2

static SmsManager getDefault()

该方法用于获取 SmsManager 的默认实例

3

void sendDataMessage(String destinationAddress, String scAddress, short destinationPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent)

此方法用于将基于数据的 SMS 发送到特定的应用程序端口。

4

void sendMultipartTextMessage(String destinationAddress, String scAddress, ArrayList<String> parts, ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents)

发送基于多部分文本的 SMS。

5

void sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

发送基于文本的 SMS。


示例

以下示例向您展示了如何使用 SmsManager 对象向给定的手机号码发送短信。

要试验此示例,您需要配备最新 Android 操作系统的实际移动设备,否则您将不得不使用可能无法工作的模拟器。

步骤

描述

1

您将使用 Android Studio IDE 创建一个 Android 应用程序,并将其命名为 tutorialspoint,位于包 com.example.tutorialspoint 下。

2

修改 src/MainActivity.java 文件并添加所需的代码来处理发送短信。

3

修改布局 XML 文件 res/layout/activity_main.xml 添加任何 GUI 组件(如果需要)。 我正在添加一个简单的 GUI 来接收要发送的手机号码和 SMS 文本,以及一个简单的按钮来发送 SMS。

4

无需在 res/values/strings.xml 中定义默认字符串常量。 Android Studio 负责处理默认常量。

5

修改AndroidManifest.xml如下图

6

运行应用程序以启动 Android 模拟器并验证应用程序中所做更改的结果。

以下是修改后的主活动文件src/com.example.tutorialspoint/MainActivity.java的内容。

package com.example.tutorialspoint;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.app.Activity;

import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.telephony.SmsManager;

import android.util.Log;
import android.view.Menu;
import android.view.View;

import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
   private static final int MY_PERMISSIONS_REQUEST_SEND_SMS =0 ;
   Button sendBtn;
   EditText txtphoneNo;
   EditText txtMessage;
   String phoneNo;
   String message;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      sendBtn = (Button) findViewById(R.id.btnSendSMS);