2012-02-09 4 views
0

これはjavaでのプログラミングに関しては初心者です。 特定の番号からSMSをキャプチャし、上記のsmsで "Balance"のような特定の文字列を検索し、次の文字列を変数にコピーしようとしています。 結果は以下のようになり、「バランス:100.00」:それは誰も私を与えることができますされている場合受信したsms-androidで特定の文字列を検索する

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

はそれが可能である

これまでのところ、私は唯一のBroadcastReceiver

SMSReceiverを使用して、着信のSMSをキャプチャすることができますこれを行う方法のガイド。

答えて

0

あなたの問題は実際には言いませんが、このルーチンは着信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 

     } 
    } 

} 
} 
関連する問題