收听短信并在Android中自动回复

时间:2014-02-24 17:53:55

标签: android sms broadcastreceiver

如何在android中自动回复收到的消息?

这是我的IncomingSMS类的onReceive()方法,它扩展了BroadcastRecevier,问题在于它发送了很多消息,我希望它只发送一个短信回复。

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);
}

2 个答案:

答案 0 :(得分:0)

您面临的是正常行为。由于您正在收听所有传入的短信,因此在收到感谢信息时必须再次发送短信。你可以做的是,发送一个在SMS中唯一的值或布尔值,并检查它。如果值存在,则只是不再发送消息。

答案 1 :(得分:0)

Onrecieve在收到短信的任何部分后运行并在收到任何部分后发送短信。我认为你应该设定接收部分短信的时间,并且在那个时间之后你发送短信的回复