/// <summary> /// This method handles the parsing of the actual SMS that was retrieved from a specific memory bank on the SIM card. /// </summary> /// <param name="smsDetailsMessageLine"></param> /// <param name="allDataLinesReceived"></param> /// <param name="allDataLinesIndex"></param> private void ParseSmsDetailsMessageLines(string smsDetailsMessageLine, string[] allDataLinesReceived, int allDataLinesIndex) { /*Sample SMS data read off the bank. * * +CMGR: "REC UNREAD","+27763777515",,"13/11/01,20:18:59+08" * Hello, how are you? * Great to hear from you * * OK */ SmsReceivedInfoWindows smsReceivedInfo = new SmsReceivedInfoWindows(); string[] smsMessageDetails = smsDetailsMessageLine.Split(','); //i.e. this is the first line e.g. +CMGR: "REC UNREAD","+27763777515",,"13/11/01,20:18:59+08" smsReceivedInfo.CellPhoneNumber = smsMessageDetails[1].Replace("\"", string.Empty); smsReceivedInfo.ReceivedDateTimeRaw = string.Format("{0},{1}", smsMessageDetails[3], smsMessageDetails[4]).Replace("\"", string.Empty); smsReceivedInfo.ReceivedDate = GetDateTimeFromSmsDateTime(smsReceivedInfo.ReceivedDateTimeRaw, _ignoreTimeZoneOnSmsDateReceived); StringBuilder smsMessage = new StringBuilder(); int messageLineIndex = allDataLinesIndex + 1; //The next line contains the first line of the SMS message. while (true) //Go through the next lines containing the SMS message. { string smsMessageLine = allDataLinesReceived[messageLineIndex].Replace("\n", string.Empty); if (smsMessageLine.Contains(CMD_OK)) { break; //End of SMS message. } smsMessage.AppendLine(smsMessageLine); messageLineIndex++; } smsReceivedInfo.SmsMessage = smsMessage.ToString(); if (OnSmsReceived != null) { OnSmsReceived(this, new SmsReceivedEventArgsWindows(smsReceivedInfo)); } if (_memoryBanksToClearQueue.Count > 0) { int simMemoryBankToClear = _memoryBanksToClearQueue.First(); ClearSimMemoryBank(simMemoryBankToClear); _memoryBanksToClearQueue.RemoveAt(0); } }
public SmsReceivedEventArgsWindows(SmsReceivedInfoWindows smsReceivedInfo) { _smsReceivedInfo = smsReceivedInfo; }