歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android廣播實現短信竊聽器和開機自動啟動Activity

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

日期:2017/3/1 10:45:04   编辑:Linux編程

一、短信竅聽器

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

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

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