public void AddMessage(Model.SmsMessage msg) { if (null == messages) { messages = new List <SmsMessage>(10); } messages.Add(msg); if (LastSentReceivedDate == DateTime.MinValue) { LastSentReceivedDate = msg.DateReceived;// we only use date received because date sent does not get set for some reason in the db } else { int cmp = msg.DateReceived.CompareTo(LastSentReceivedDate); if (cmp > 0) { LastSentReceivedDate = msg.DateReceived;// we only use date received because date sent does not get set for some reason in the db } } if (!msg.IsOutboxSentItem && !msg.IsMMS && (LastReceivedSmsMsgId == 0 || msg.Id < LastReceivedSmsMsgId)) { LastReceivedSmsMsgId = msg.Id; } else if (msg.IsOutboxSentItem && !msg.IsMMS && (LastSentSmsMsgId == 0 || msg.Id < LastSentSmsMsgId)) { LastSentSmsMsgId = msg.Id; } else if (msg.IsMMS && (LastMmsMsgId == 0 || msg.Id < LastMmsMsgId)) { LastMmsMsgId = msg.Id; } }
public override void OnReceive(Context context, Intent intent) { // SMS_RECEIVED if (Telephony.Sms.Intents.SmsReceivedAction.Equals(intent.Action)) { Model.SmsMessage newMsg = null; string message = string.Empty; string phoneKey = null; SmsMessage[] messages = Telephony.Sms.Intents.GetMessagesFromIntent(intent); SmsMessage prevMsg = null; if (messages.Length > 0) { for (int i = 0; i < messages.Length; i++) { SmsMessage msg = messages[i]; if (null != prevMsg && msg.OriginatingAddress != prevMsg.OriginatingAddress) {// send the curren previous set if (null != MobileGlobals.NotifyNewSmsMessageArrivedCallback) { phoneKey = MobileGlobals.GeneratePhoneLookupKey(prevMsg.OriginatingAddress); DateTime now = DateTime.Now; newMsg = new Model.SmsMessage() { DateReceived = now, DateSent = now, ToFromPhoneAddress = prevMsg.OriginatingAddress, PhoneLookupKey = phoneKey, Message = message, ThreadId = -1 }; MobileGlobals.NotifyNewSmsMessageArrivedCallback(newMsg); } // reset the message message = string.Empty; } message += msg.MessageBody; if (messages.Length > 1 && i < messages.Length - 1) { message += " "; } prevMsg = msg; } } if (null != MobileGlobals.NotifyNewSmsMessageArrivedCallback && !string.IsNullOrEmpty(message)) { phoneKey = MobileGlobals.GeneratePhoneLookupKey(prevMsg.OriginatingAddress); DateTime now = DateTime.Now; newMsg = new Model.SmsMessage() { DateReceived = now, DateSent = now, ToFromPhoneAddress = prevMsg.OriginatingAddress, PhoneLookupKey = phoneKey, Message = message, ThreadId = -1 }; MobileGlobals.NotifyNewSmsMessageArrivedCallback(newMsg); } } // SMS_DELIVER_ACTION if (Telephony.Sms.Intents.SmsDeliverAction.Equals(intent.Action)) { // TODO } }