diff --git a/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java b/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java index f08aa0c..1102561 100644 --- a/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java +++ b/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java @@ -43,8 +43,10 @@ public class MatrixService extends Service { if (mx == null && !botUsername.isEmpty() && !botPassword.isEmpty() && !username.isEmpty() && !device.isEmpty() && !hsUrl.isEmpty() && !syncDelay.isEmpty() && !syncTimeout.isEmpty()) { mx = new Matrix(getApplication(), hsUrl, botUsername, botPassword, username, device, syncDelay, syncTimeout); - Log.e(TAG, "onStartCommand222: " + hsUrl ); + Log.e(TAG, "onStartCommand: " + hsUrl ); Toast.makeText(this, "service starting:", Toast.LENGTH_SHORT).show(); + } else if (mx == null) { + Toast.makeText(this, "Missing Information", Toast.LENGTH_SHORT).show(); } Log.e(TAG, "onStartCommand: Service"); diff --git a/app/src/main/java/eu/droogers/smsmatrix/ReceiverListener.java b/app/src/main/java/eu/droogers/smsmatrix/ReceiverListener.java index db19e36..cf1e6c0 100644 --- a/app/src/main/java/eu/droogers/smsmatrix/ReceiverListener.java +++ b/app/src/main/java/eu/droogers/smsmatrix/ReceiverListener.java @@ -7,6 +7,8 @@ import android.os.Bundle; import android.telephony.SmsMessage; import android.telephony.TelephonyManager; import android.util.Log; +import java.util.HashMap; +import java.util.Map; /** * Created by gerben on 6-10-17. @@ -25,23 +27,41 @@ public class ReceiverListener extends BroadcastReceiver { } private void handleIncomingSMS(Context context, Intent intent) { - Bundle bundle = intent.getExtras(); + Map msg = null; SmsMessage[] msgs = null; - String msg_from; - if (bundle != null){ - try{ - Object[] pdus = (Object[]) bundle.get("pdus"); - msgs = new SmsMessage[pdus.length]; - for(int i=0; i(nbrOfpdus); + msgs = new SmsMessage[nbrOfpdus]; + + // Send long SMS of same sender in one message + for (int i = 0; i < nbrOfpdus; i++) { msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); - msg_from = msgs[i].getOriginatingAddress(); - String msgBody = msgs[i].getMessageBody(); - Utilities.sendMatrix(context, msgBody, msg_from, Matrix.MESSAGE_TYPE_TEXT); + + String originatinAddress = msgs[i].getOriginatingAddress(); + + // Check if index with number exists + if (!msg.containsKey(originatinAddress)) { + // Index with number doesn't exist + msg.put(msgs[i].getOriginatingAddress(), msgs[i].getMessageBody()); + + } else { + // Number is there. + String previousparts = msg.get(originatinAddress); + String msgString = previousparts + msgs[i].getMessageBody(); + msg.put(originatinAddress, msgString); + } } - }catch(Exception e){ - Log.d("Exception caught",e.getMessage()); } } + for (String originatinAddress : msg.keySet()) { + Utilities.sendMatrix(context, msg.get(originatinAddress), originatinAddress, Matrix.MESSAGE_TYPE_TEXT); + } } private void handleIncomingCall(Context context, Intent intent) {