在收到的sms-android上搜索特定的字符串

时间:2012-02-09 15:21:23

标签: android sms broadcastreceiver

我是一个在java编程时的新手。 我试图从一个特定的数字捕获一个短信,并搜索所述短信的特定字符串,如“平衡”,并将下一个字符串复制到一个变量。 结果就像“平衡:100.00”

到目前为止,我只能使用BroadcastReceiver

捕获传入的短信

SMSReceiver:

public class SMSReceiver extends BroadcastReceiver
{

    String origin, body;

  @Override
  public void onReceive(Context context, Intent intent)
  {
    Bundle extras = intent.getExtras();

    SmsMessage[] msgs = null;

    if (extras == null) return;

    Object[] pdus =  (Object[]) extras.get("pdus");

    msgs = new SmsMessage[pdus.length];
    for (int i=0; i<msgs.length; i++)
    {
        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);

        // Original Address
        origin = msgs[i].getOriginatingAddress();

        // Message body
        if ("123".equals(origin))
        {
          body = msgs[i].getMessageBody().toString();
          Toast.makeText(context, body, Toast.LENGTH_LONG).show();
          abortBroadcast();
        }
        else
      abortBroadcast();

        break;
     }
  }    
}

是否有可能任何人都可以给我一个如何做到这一点的指南。

1 个答案:

答案 0 :(得分:0)

不确定你的问题是什么,因为你实际上没有说,但是这个例程对我来说可以捕获传入的短信。

public class SMSReceiver extends BroadcastReceiver {

private SmsMessage[] getMessagesFromIntent(Intent intent) {
    SmsMessage retMsgs[] = null;
    Bundle bdl = intent.getExtras();
    try {
        Object pdus[] = (Object[]) bdl.get("pdus");
        retMsgs = new SmsMessage[pdus.length];
        for (int n = 0; n < pdus.length; n++) {
            byte[] byteData = (byte[]) pdus[n];
            retMsgs[n] = SmsMessage.createFromPdu(byteData);
        }
    } catch (Exception e) {
        Log.e("GetMessages", "fail", e);
    }
    return retMsgs;
}

@Override
public void onReceive(Context context, Intent intent) {
    String message;

    if (!intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) return;

    SmsMessage msg[] = getMessagesFromIntent(intent);

    // filter through all the messages
    for (int i = 0; i < msg.length; i++) {
        message = msg[i].getDisplayMessageBody();

                    // Do something with the message

        }
    }

}
}