2012-02-09 40 views
0

即時通訊新手當談到在java編程。 即時通訊嘗試從特定的數字捕獲短信,並搜索所述短信的特定字符串,如「平衡」,並將下一個字符串複製到變量。 結果會是這樣「餘額:100.00」搜索特定的字符串上收到短信安卓

到目前爲止,我只能用廣播接收器

捕捉進入SMS

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

是可能的,如果它是任何人都可以給我一個指導如何做到這一點。

回答

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 

     } 
    } 

} 
}