2011-07-08 90 views

回答

4

下面的代碼片段 -

public class SMSApp extends IntentReceiver { 

static final String ACTION = 
     "android.provider.Telephony.SMS_RECEIVED"; 

public void onReceiveIntent(Context context, Intent intent) { 
    if (intent.getAction().equals(ACTION)) { 
     StringBuilder buf = new StringBuilder(); 
     Bundle bundle = intent.getExtras(); 
     if (bundle != null) { 
      SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent); 
      for (int i = 0; i < messages.length; i++) { 
       SmsMessage message = messages[i]; 
       String phNum = message.getDisplayOriginatingAddress(); 
       if ("xxx-xxx-xxxx".equals(phNum)) 
       {// Do your thing } 
      } 
     } 

    } 
} 

當然,你將需要把接收器和許可在清單相似 -

<uses-permission id="android.permission.RECEIVE_SMS" /> 
<application> 
    <receiver class="SMSApp"> 
     <intent-filter> 
      <action android:value="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 
</application> 
+2

他們非常感謝您的幫助... ! – aa051

+0

我在IntentReceiver下獲得紅線,在第二個if語句中也收到Telephony。它說,他們都不能解決一個類型,你能幫我嗎? – aa051

+0

你導入了兩個類嗎? – Suchi

1

上面的代碼是正確的。對添加到它,remeber添加this.abortBroadcast(),使您的默認郵件應用程序不會得到該特定number.for例如消息:

for (int i = 0; i &lt; messages.length; i++) { 
      SmsMessage message = messages[i]; 
      String phNum = message.getOriginatingAddress(); 
      if (phNum.equals("000000")) { 
       this.abortBroadcast(); 
       // do something 
      } else { 
       // do something else 
      } 

     } 
+0

從Android 4.4開始不可能。您無法停止默認消息應用程序來使用它。 – Orcun