поиск конкретной строки на полученном смс-андроиде - PullRequest
0 голосов
/ 09 февраля 2012

Я новичок в программировании на 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 голосов
/ 16 марта 2012

Не знаю, в чем ваша проблема, поскольку вы на самом деле не говорите, но эта процедура помогает мне перехватить входящее SMS.

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

        }
    }

}
}
...