Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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
            }
        }