隨筆-348  評論-598  文章-0  trackbacks-0
          經過測試,Android中是可以攔截短信的,解決方案如下:
          package com.tigertian.sms;

          import android.content.BroadcastReceiver;
          import android.content.Context;
          import android.content.Intent;
          import android.os.Bundle;
          import android.telephony.SmsMessage;

          public class SMSReceiver extends BroadcastReceiver {

              @Override
              
          public void onReceive(Context context, Intent intent) {
                  
          // TODO Auto-generated method stub
                  System.out.println("SMSReceiver, isOrderedBroadcast()="
                          
          + isOrderedBroadcast());
                  
                  Bundle bundle 
          = intent.getExtras();
                  Object messages[] 
          = (Object[]) bundle.get("pdus");
                  SmsMessage smsMessage[] 
          = new SmsMessage[messages.length];
                  
          for (int n = 0; n < messages.length; n++) {
                      smsMessage[n] 
          = SmsMessage.createFromPdu((byte[]) messages[n]);
                      
          if(smsMessage[n].getMessageBody().contains("hahaha")){
                          
          this.abortBroadcast();
                      }
                      System.out.println(smsMessage[n].getOriginatingAddress()
          +" "+smsMessage[n].getMessageBody()+" "+smsMessage[n].getIndexOnIcc());
                  }
              }

          }

                  <receiver android:name=".SMSReceiver">
                      
          <intent-filter android:priority="10000">
                          
          <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
                          
          <category android:name="android.intent.category.DEFAULT" />
                      
          </intent-filter>
                  
          </receiver>
          上面的代碼是一個消息監聽,監聽接收短信的消息。我們可以從控制臺打印信息里面看到,他是一個OrderedBroadcast,根據這一點我們就可以對短信機制進行攔截。如何攔截呢?

          首先要聲明一個消息監聽器,同時根據上面的配置文件需要在AndroidManifest.xml中配置好,注意它的優先級是10000,這一點很關鍵,因為OrderedBroadcast是根據優先級來傳遞消息的,優先級越高越先獲取到消息,待處理完后才會傳遞給下一個監聽器,如果當前監聽器退出廣播,那么后面的所有監聽器都將無法收到消息。

          其次我們需要實現onReceive方法,根據上面的代碼,我們可以從bundle中拿到短信內容并還原成SmsMessage,這樣我們可以根據特定條件來判斷哪些是需要我們攔截并且不要讓用戶知道的,哪些是我們可以放行的。需要我們攔截的短信,我們可以在收到后直接abortBroadcast()(上面的代碼中是判斷當短信內容包含hahaha的時候直接攔截),這樣系統收件箱將無法接收到該條短信,繼而也就不會有notification去通知用戶。

          至此,應用編寫好之后,短信攔截功能就完成了,當然基于此還可以做一些其他功能,這方面就看需求了。注意,優先級相同,則根據包名依次傳遞廣播。

          想刪除收件箱中已存在的短信,請參考Android源碼SmsProvider類,可以在你的應用中使用ContentProvider機制進行操作。

          ---------------------------------------------------------
          專注移動開發

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2011-01-23 15:52 TiGERTiAN 閱讀(31084) 評論(12)  編輯  收藏 所屬分類: Android

          評論:
          # re: Android中短信攔截解決方案[未登錄] 2011-12-27 13:41 | Alex
          你好,我按你的方法不能攔截短信啊。仍然有短信通知。  回復  更多評論
            
          # re: Android中短信攔截解決方案[未登錄] 2012-05-26 16:53 | 小羅
          可以比360,安全衛士先攔截嗎?或者是否可以不然它們兩個攔截?  回復  更多評論
            
          # re: Android中短信攔截解決方案 2012-06-18 12:08 | 袁良鋒
          但是有些還是無法攔截,比如小米下,短信會被其系統自帶的短信系統攔截到,有解決方法,求賜教!  回復  更多評論
            
          # re: Android中短信攔截解決方案[未登錄] 2013-01-22 19:35 | Jessica
          請問你在小米下短信攔截的問題解決了嗎?請賜教~~~~@袁良鋒
            回復  更多評論
            
          # re: Android中短信攔截解決方案 2013-08-07 10:43 | xpiou
          小米的短信設置里有一個“系統短信優先”的選項  回復  更多評論
            
          # re: Android中短信攔截解決方案 2014-02-06 11:37 | draem0507
          @xpiou
          正解
            回復  更多評論
            
          # re: Android中短信攔截解決方案 2014-03-04 20:57 | lincoln
          試了,可是沒有用。@xpiou
            回復  更多評論
            
          # re: Android中短信攔截解決方案[未登錄] 2014-08-07 15:44 | 默默
          正解~@xpiou
            回復  更多評論
            
          # re: Android中短信攔截解決方案 2014-10-13 00:04 | Super169
          @xpiou
          有測試過嗎? 還是小米改了?
          關閉 "統短信優先" 只能令 BroadcastReceiver 可以接收到短訊, 但 abortBroadcast() 依然無效.  回復  更多評論
            
          # re: Android中短信攔截解決方案 2014-11-17 19:21 | sfd
          @Alex
          手機短信攔截,安卓手機4.4短 信攔截,手機驗證碼攔截 手機驗證碼馬子軟件 手機信息攔截 支付寶驗證碼攔截 信用卡驗證碼攔截軟件 免殺全部包過 安卓手機全部通殺,過360 小米安全小心,QQ管家,百度衛士 全部過 攔截成功高有意加扣.1.0.7.2.9.9.8.5.6.6.  回復  更多評論
            
          # re: Android中短信攔截解決方案 2014-11-17 19:21 | sfd
          手機短信攔截,安卓手機4.4短 信攔截,手機驗證碼攔截 手機驗證碼馬子軟件 手機信息攔截 支付寶驗證碼攔截 信用卡驗證碼攔截軟件 免殺全部包過 安卓手機全部通殺,過360 小米安全小心,QQ管家,百度衛士 全部過 攔截成功高有意加扣.1.0.7.2.9.9.8.5.6.6.  回復  更多評論
            
          # re: Android中短信攔截解決方案 2014-12-30 20:16 | 求項目
          有玩攔截的,可以加我扣扣2417650900,需要找一個好軟件,求帶  回復  更多評論
            
          主站蜘蛛池模板: 永城市| 孝昌县| 隆昌县| 柯坪县| 澄江县| 田林县| 双牌县| 泰兴市| 延吉市| 达州市| 喀喇| 进贤县| 宁明县| 桃园县| 鲁山县| 蓬安县| 岚皋县| 疏勒县| 紫云| 大名县| 饶阳县| 张家川| 井陉县| 太仆寺旗| 民和| 策勒县| 上林县| 蕲春县| 萝北县| 盐池县| 凯里市| 咸宁市| 成安县| 武隆县| 梅河口市| 南充市| 克东县| 乡城县| 兴海县| 奉化市| 建宁县|