1、Android 提供一系列 API,可以是我们在自己的程序中发送和接收短信;
2、接收短信:
1)当手机接收到一条短信时,系统会发出一条值为 android.provider.Telephony.SMS_RECEIVED 的广播,这条广播携带着与短信相关的所有信息;
2)我们可以在自己的程序中接收到这条广播,并提取其中的数据,即为接收短信;
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus"); // 提取短信消息,每一个pdu都表示一条短信消息
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
String address = messages[0].getOriginatingAddress(); // 获取发送方号码
String fullMessage = "";
for (SmsMessage message : messages) {
fullMessage += message.getMessageBody(); // 获取短信内容}
sender.setText(address);
content.setText(fullMessage);
}
}
3、发送短信:
1)Android 中通过 SmsManager 来发送,先调用 getDefault() 方法获取实例,然后调用它的 sendTextMessage() 方法来发送短信;
2)sendTextMessage() 方法中,第一参数为收信人,第三个参数为发送的内容,第四个参数为一个 PendingIntent 对象,它用于监听短信的发送状态;
public void send() {
SmsManager manager = SmsManager.getDefault();//获取SmsManager实例
Intent intent = new Intent("SENT_SMS_ACTION");
PendingIntent pi = PendingIntent.getBroadcast(MyActivity.this, 0, intent, 0);//监听短信发送状态的PendingIntent,当短信发送完毕时发送一条值SENT_SMS_ACTION的广播
manager.sendTextMessage(to.getText().toString(), null, sendContent.getText().toString(), pi, null);//发送短信
}