diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5eee63f..2c9166f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,10 +23,13 @@ - + + + + diff --git a/app/src/main/java/eu/droogers/smsmatrix/Matrix.java b/app/src/main/java/eu/droogers/smsmatrix/Matrix.java index b75dd3a..ef6a45f 100644 --- a/app/src/main/java/eu/droogers/smsmatrix/Matrix.java +++ b/app/src/main/java/eu/droogers/smsmatrix/Matrix.java @@ -141,7 +141,7 @@ public class Matrix { } } - public void sendMessage(final String phoneNumber, final String body) { + public void sendMessage(final String phoneNumber, final String body, final String type) { if (session != null && session.isAlive()) { Room room = getRoomByPhonenumber(phoneNumber); if (room == null) { @@ -153,16 +153,16 @@ public class Matrix { session.getRoomsApiClient().updateTopic(info, phoneNumber, new SimpleApiCallback()); changeDisplayname(info, getContactName(phoneNumber, context)); Room room = store.getRoom(info); - SendMesageToRoom(room, body); + SendMesageToRoom(room, body, type); } }); } else { changeDisplayname(room.getRoomId(), getContactName(phoneNumber, context)); - SendMesageToRoom(room, body); + SendMesageToRoom(room, body, type); } } else { Log.e(tag, "Error with sending message"); - notSendMesages.add(new NotSendMesage(phoneNumber, body)); + notSendMesages.add(new NotSendMesage(phoneNumber, body, type)); } } @@ -173,10 +173,10 @@ public class Matrix { session.getRoomsApiClient().sendStateEvent(roomId, "m.room.member", session.getMyUserId(), params, new SimpleApiCallback()); } - public void SendMesageToRoom(Room room, String body) { + public void SendMesageToRoom(Room room, String body, String type) { Message msg = new Message(); msg.body = body; - msg.msgtype = "m.text"; + msg.msgtype = type; session.getRoomsApiClient().sendMessage(String.valueOf(transaction), room.getRoomId(), msg, new SimpleApiCallback()); transaction++; } @@ -213,7 +213,7 @@ public class Matrix { public void sendMessageList(List messages) { for (NotSendMesage ms : messages) { - sendMessage(ms.getPhone(), ms.getBody()); + sendMessage(ms.getPhone(), ms.getBody(), ms.getType()); } } diff --git a/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java b/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java index d9b20d0..cc1b111 100644 --- a/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java +++ b/app/src/main/java/eu/droogers/smsmatrix/MatrixService.java @@ -46,8 +46,9 @@ public class MatrixService extends Service { String phone = intent.getStringExtra("SendSms_phone"); String body = intent.getStringExtra("SendSms_body"); + String type = intent.getStringExtra("SendSms_type"); if (phone != null) { - mx.sendMessage(phone, body); + mx.sendMessage(phone, body, type); } return START_NOT_STICKY; diff --git a/app/src/main/java/eu/droogers/smsmatrix/NotSendMesage.java b/app/src/main/java/eu/droogers/smsmatrix/NotSendMesage.java index d11d746..bf4ff09 100644 --- a/app/src/main/java/eu/droogers/smsmatrix/NotSendMesage.java +++ b/app/src/main/java/eu/droogers/smsmatrix/NotSendMesage.java @@ -5,12 +5,14 @@ package eu.droogers.smsmatrix; */ class NotSendMesage { + private String type; private String phone; private String body; - public NotSendMesage(String phone, String body) { + public NotSendMesage(String phone, String body, String type) { this.phone = phone; this.body = body; + this.type = type; } public String getPhone() { @@ -20,4 +22,8 @@ class NotSendMesage { public String getBody() { return body; } + + public String getType() { + return type; + } } diff --git a/app/src/main/java/eu/droogers/smsmatrix/ReceiverListener.java b/app/src/main/java/eu/droogers/smsmatrix/ReceiverListener.java new file mode 100644 index 0000000..caada80 --- /dev/null +++ b/app/src/main/java/eu/droogers/smsmatrix/ReceiverListener.java @@ -0,0 +1,72 @@ +package eu.droogers.smsmatrix; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.telephony.SmsMessage; +import android.telephony.TelephonyManager; +import android.util.Log; + +/** + * Created by gerben on 6-10-17. + */ + +public class ReceiverListener extends BroadcastReceiver { + private static final String TAG = "ReceiverListener"; + + @Override + public void onReceive(Context context, Intent intent) { + if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ + handleIncomingSMS(context, intent); + } else if (intent.getAction().equals("android.intent.action.PHONE_STATE")) { + handleIncomingCall(context, intent); + } + } + + private void handleIncomingSMS(Context context, Intent intent) { + Bundle bundle = intent.getExtras(); + 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