2011-07-08 64 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