1. 基于Broadcast接受短信
1.1 原理
Android收到短信后系统会发送一个android.provider.Telephony.SMS_RECEIVED广播。把它放在Bundle(intent.Extras)中,Bundle可以理解为一个Map,短信采用"pdus"作为键,pdus应该是protocol description units的简写,也就是一组短信。Android不是一接收到短信就立刻发出广播的,他会有一定的延迟,所以就有可能会有多条短信,所以才会用数组来存放。1.2 实现方法一
原理已经清楚,那么实现是通过重写BroadcastReceiver.onReceive(Context context, Intent intent)函数,关键代码如下:Bundle bundle = intent.getExtras();
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
sender = smsMessage[n].getOriginatingAddress();// 获取短信的发送者
content = smsMessage[n].getMessageBody();// 获取短信的内容
完整实现为:
public class EventReceiver extends BroadcastReceiver {
private Context mCo