0

これはSMSを読むための私のコードです。行 1 に 00 が含まれていない場合、受信した SMS を行ごとに読みたい場合、行 2 にこの文字列が含まれている場合、これを行います。

以下は、00を含むSMSのみを読み取り、行ごとに読み取らないコードです。このコードを変更してSMSを行ごとに読み取る方法

  public void onReceive(Context context, Intent intent) 
{
    //---get the SMS message passed in---
    Bundle bundle = intent.getExtras();        
    SmsMessage[] msgs = null;
    String str = "";  

    if (bundle != null)
    {
        //---retrieve the SMS message received---
        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]);                
            str += "SMS from " + msgs[i].getOriginatingAddress();   


            str += " :";
            str += msgs[i].getMessageBody().toString().split("/n");;
            str += "\n"; 






            if(str.contains("00"));
            {


                 Intent l = new Intent(context,AgAppMenu.class);
                 l.putExtra("msg",str);
                 l.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
                 context.startActivity(l);


            }
4

1 に答える 1

1

String.split()を使用します。

たとえば、 String からさまざまな行を取得するには、次のようにします。

String example = "Hello\nWorld!";
String[] parts = example.split("\n");

// parts[0] contains "Hello"
// parts[1] contains "World!"

あなたの場合、メッセージの各行を取得するには、次のようなものを使用します:

String[] msg_lines = msgs[i].getMessageBody().toString().split("/n");

したがって、コードは次のようになります。

String[] msg_lines = null;
for(...) {
    msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
    str += "SMS from " + msgs[i].getOriginatingAddress();                     
    str += " :";
    str += msgs[i].getMessageBody().toString();
    str += "\n";

    msg_lines = msgs[i].getMessageBody().toString().split("\n");
    for (String line : msg_lines)
    {
        if (line.contains("00")) { /*then*/ }
    }
}
于 2012-09-03T07:40:01.910 に答える