歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android廣播實現短信竊聽器和開機自動啟動Activity

一、短信竅聽器

首先:訂閱感興趣的廣播 Intent ,訂閱方法有兩種:
第一種:使用代碼進行訂閱

  1. IntentFilter filter = new IntentFilter("Android.provider.Telephony.SMS_RECEIVED");  
  2. IncomingSMSReceiver receiver = new IncomingSMSReceiver();  
  3. registerReceiver(receiver, filter);  
第二種:在 AndroidManifest.xml 文件中的 <application> 節點裡進行訂閱 :
  1. <receiver android:name=".IncomingSMSReceiver">  
  2. <intent-filter>  
  3. <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
  4. </intent-filter>  
  5. </receiver>  
咱用第二種:

在android下,要想接受廣播信息,那麼這個廣播接收器就得我們自己來實現了,我們可以繼承BroadcastReceiver,就可以有一個廣播接受器了。有個接受器還不夠,我們還得重寫BroadcastReceiver裡面的onReceiver方法,當來廣播的時候我們要干什麼,這就要我們自己來實現!!

  1. public class MySMSListener extends BroadcastReceiver {  
  2.   
  3.     public void onReceive(Context arg0, Intent intent) {  
  4.           
  5.         Bundle bundle=intent.getExtras();  
  6.         Object[] pdus=(Object[])bundle.get("pdus");               
  7.         if(pdus!=null&&pdus.length>0){  
  8.             SmsMessage[] messages=new SmsMessage[pdus.length];  
  9.             for(int i=0;i<messages.length;i++){  
  10.                 byte[] pdu=(byte[]) pdus[i];  
  11.                 messages[i]=SmsMessage.createFromPdu(pdu);  
  12.             }  
  13.             for(SmsMessage msg:messages){  
  14.                 String content=msg.getMessageBody();  
  15.                 String sender=msg.getOriginatingAddress();  
  16.                 Date date=new Date(msg.getTimestampMillis());  
  17.                 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  18.                 String sendTime=sdf.format(date);  
  19.                                   
  20.                 if(sender!=null&& sender.endsWith("5556")){  
  21.                     System.out.println("5556");  
  22.                     SmsManager smsManager=SmsManager.getDefault();  
  23.                     smsManager.sendTextMessage("5556"null"go to !!"nullnull);  
  24.                     this.abortBroadcast();//終止廣播   
  25.                 }  
  26.             }  
  27.         }  
  28.     }  
  29.   
  30. }  

這裡需要啟動兩個模擬器!!

if語句判斷是不是5556來的短信,如果是,終止廣播,不讓5556發短信到5554,並給5556發一個短信,內容為“go to!!";

在這裡 , 不用理解到底什麼是 pdus ,只要記住是這麼用的就可以了!

然後就是在 AndroidManifest.xml 文件中的 <application> 節點裡加入如下代碼,

注冊

  1. <receiver android:name="MySMSListener"  
  2.             >  
  3.             <intent-filter android:priority="1000">  
  4.                 <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
  5.             </intent-filter>  
  6.         </receiver>  
這個priority是定義權限,值是-1000~1000;
還要加上權限申請:
  1. <uses-permission android:name="android.permission.RECEIVE_SMS"/>  
ok!你可以貼代碼試試效果!!
Copyright © Linux教程網 All Rights Reserved