<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.sms.MainActivity">
<EditText
android:id="@+id/et_num"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入电话号码"/>
<EditText
android:id="@+id/et_sms"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入短信内容"/>
<Button
android:id="@+id/bt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="发送"/>
</LinearLayout>
package com.example.sms;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private EditText mEt_num;
private EditText mEt_sms;
private Button mBt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
mEt_num = (EditText) findViewById(R.id.et_num);
mEt_sms = (EditText) findViewById(R.id.et_sms);
mBt = (Button) findViewById(R.id.bt);
mBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取电话号码和短信内容
String num = mEt_num.getText().toString().trim();
String sms = mEt_sms.getText().toString().trim();
if (TextUtils.isEmpty(num) || TextUtils.isEmpty(sms)) {
Toast.makeText(MainActivity.this, "电话号码或者短信内容不能为空!", Toast.LENGTH_SHORT).show();
//return后面也可以不带参数,结束方法的执行。
return;
}
// 通过 SmsManager 的静态方法获取对象。
SmsManager smsManager = SmsManager.getDefault();
// 短信长度超过一定的限制后需要切割成多条分批发送
//一定要使用 SmsManager 对象提供的 divideMessage(String)方法切割。
ArrayList<String> parts = smsManager.divideMessage(sms);
//第一个参数 String 目标手机电话号码
//第二个参数 String 短信中心号码,建议设置为 null,
//使用 sim 卡提供的默认短信中心
//第三个参数 ArrayList 短信内容
//第四个参数 ArrayList<PendingIntent>> 短信发送后如果发送成功了,
//那么回调该参数,通过延时意图和广播才能实现,这里设置为 null 即可
//第五个参数 ArrayList<PendingIntent>> 短信发送后如果被对方收到了,
//那么回调该参数。
smsManager.sendMultipartTextMessage(num, null, parts, null, null);
Toast.makeText(MainActivity.this, "发送成功!", Toast.LENGTH_SHORT).show();
}
});
}
}
添加权限
在 AndroidManifest.xml 中添加发送短信权限。
<uses-permission android:name="android.permission.SEND_SMS"/>