mirror of
https://github.com/tijder/SmsMatrix.git
synced 2024-10-27 18:24:01 +00:00
Add Android call events as notice in the contact room #10
This commit is contained in:
parent
3f8141c2dc
commit
c7d2a14801
@ -23,10 +23,13 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<receiver android:name="eu.droogers.smsmatrix.SmsListener">
|
||||
<receiver android:name="eu.droogers.smsmatrix.ReceiverListener">
|
||||
<intent-filter>
|
||||
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PHONE_STATE" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<service android:name="eu.droogers.smsmatrix.MatrixService" />
|
||||
|
@ -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<Void>());
|
||||
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<Void>());
|
||||
}
|
||||
|
||||
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<Event>());
|
||||
transaction++;
|
||||
}
|
||||
@ -213,7 +213,7 @@ public class Matrix {
|
||||
|
||||
public void sendMessageList(List<NotSendMesage> messages) {
|
||||
for (NotSendMesage ms : messages) {
|
||||
sendMessage(ms.getPhone(), ms.getBody());
|
||||
sendMessage(ms.getPhone(), ms.getBody(), ms.getType());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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<msgs.length; i++){
|
||||
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
|
||||
msg_from = msgs[i].getOriginatingAddress();
|
||||
String msgBody = msgs[i].getMessageBody();
|
||||
sendMatrix(context, msgBody, msg_from, "m.text");
|
||||
}
|
||||
}catch(Exception e){
|
||||
Log.d("Exception caught",e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleIncomingCall(Context context, Intent intent) {
|
||||
String cal_state = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
|
||||
String cal_from = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
|
||||
String body = cal_from;
|
||||
switch(cal_state){
|
||||
case "IDLE":
|
||||
body += " end call";
|
||||
break;
|
||||
case "OFFHOOK":
|
||||
body += " answered call";
|
||||
break;
|
||||
case "RINGING":
|
||||
body += " is calling";
|
||||
break;
|
||||
}
|
||||
sendMatrix(context, body, cal_from, "m.notice");
|
||||
}
|
||||
|
||||
private void sendMatrix(Context context, String body, String phone, String type) {
|
||||
Intent intent = new Intent(context, MatrixService.class);
|
||||
intent.putExtra("SendSms_phone", phone);
|
||||
intent.putExtra("SendSms_body", body);
|
||||
intent.putExtra("SendSms_type", type);
|
||||
context.startService(intent);
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
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.util.Log;
|
||||
|
||||
/**
|
||||
* Created by gerben on 6-10-17.
|
||||
*/
|
||||
|
||||
public class SmsListener extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
|
||||
Bundle bundle = intent.getExtras(); //---get the SMS message passed in---
|
||||
SmsMessage[] msgs = null;
|
||||
String msg_from;
|
||||
if (bundle != null){
|
||||
//---retrieve the SMS message received---
|
||||
try{
|
||||
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]);
|
||||
msg_from = msgs[i].getOriginatingAddress();
|
||||
String msgBody = msgs[i].getMessageBody();
|
||||
System.out.println(msg_from + ": " + msgBody);
|
||||
|
||||
// Matrix mx = new Matrix(context, "https://matrix.org");
|
||||
sendMatrix(context, msgBody, msg_from);
|
||||
}
|
||||
}catch(Exception e){
|
||||
Log.d("Exception caught",e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void sendMatrix(Context context, String body, String phone) {
|
||||
Intent intent = new Intent(context, MatrixService.class);
|
||||
intent.putExtra("SendSms_phone", phone);
|
||||
intent.putExtra("SendSms_body", body);
|
||||
context.startService(intent);
|
||||
// MainActivity.mx.sendMessage( + ": " + );
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user