2014-02-24 61 views
0

如何在Android中自動回覆收到的消息?在Android中收聽短信並自動回覆它

這是我的IncomingSMS類中的onReceive()方法,它擴展了BroadcastRecevier,問題在於它發送很多消息,我希望它只發送一條SMS回覆。

public class IncomingSMS extends BroadcastReceiver{ 
private String senderNumber; 

@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle bundle = intent.getExtras(); 
    SmsMessage[] msgs = null; 

    String message = "";    

    if(bundle != null){ 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length]; 



     for(int i = 0; i < msgs.length; i++){ 
      msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
      message = msgs[i].getMessageBody(); 
      senderNumber = msgs[i].getOriginatingAddress(); 
     } 
     senderNumber = msgs[0].getOriginatingAddress(); 

     Toast.makeText(context, message, Toast.LENGTH_LONG).show(); 
     sendMessage(senderNumber, "Thank you for sending me a message"); 
    } 
} 

private void sendMessage(String number, String message) { 
    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(number, null, message, null, null); 
} 
+0

你是否發送給另一個號碼來測試它? – user2511882

+0

是的,我希望它只發送一個短信給該號碼(誰最初發送消息),(它是應用程序的一部分,將安裝在設備上,發送者和接收者) – anshulv

回答

0

你面對的是正常行爲。由於您正在收聽所有收到的短信,因此當它收到感謝信時,必定會再次發送短信。你可以做的是,發送一個值或一個布爾值,在SMS中是獨一無二的,並對其進行檢查。如果該值存在,則不要再發送該消息。

+0

是的你是對的。我的問題是如何實現這樣的功能,即兩臺設備上的BroadcastReceiver不會相互回覆。 SmsManager類似乎沒有任何幫助,我們將如何發送布爾值或整數計數器來檢查重複的Sms? – anshulv

+0

在SMS中發送一些獨特的值。 – user2511882

+0

謝謝。它正在工作。 – anshulv

0

Onrecieve運行接收SMS的任何部分和接收任何part.i的後發短信想你應該設定一個時間,接收短信的一部分,並通過後,那個時候你發送短信的答覆後