Рис. 10.7. Прием SMS-сообщения

<p>Прием и обработка SMS-сообщений</p>

Итак, мы научились отправлять SMS-сообщения из своей программы. Но было бы неплохо научить приложения принимать подобные сообщения. Для приема сообщений существует пространство имен MessageInterception, которое находится в сборке Microsoft.WindowsMobilе.PocketOutlook.

Следует заметить: можно организовать прием сообщений таким образом, что запущенное приложение будет перехватывать нужные сообщения, содержащие ключевые слова. Причем система даже не покажет окно, уведомляющее о прибытии перехваченного события.

С этой возможностью стоит познакомиться ближе. После создания нового проекта InterceptionSMS_CS, нужно добавить на форму кнопку для отсылки SMS-сообщения, флажок chkAlert для установки флага срочности и текстовое поле, в котором будет содержаться текст SMS-сообщения. Затем надо задать ссылки на уже применявшиеся ранее сборки Microsoft.WindowsMobile и Microsoft.WindowsMobile.PocketOutlook. Код, отвечающий за обработку принятых сообщений, приведен в листинге 10.11

Листинг 10.11

using Microsoft.WindowsMobile;

using Microsoft.WindowsMobile.PocketOutlook;

using Microsoft.WindowsMobile.PocketOutlook.MessageInterception;

// Объявляем переменную

private MessageInterceptor smsInterceptor;

private void smsInterceptor_MessageReceived(object sender,

 MessageInterceptorEventArgs e) {

 // Обработка входящего сообщения

 MessageBox.Show("К вам пришло срочное сообщение");

}

private void butSendSMS_Click(object sender, EventArgs e) {

 SmsMessage message = new SmsMessage();

 // Номер получателя

 message.To.Add(new Recipient("4250010001"));

 // Текст сообщения

 if (chkAlert.Checked) {

  // Если взведен флажок, то добавляем слово Срочно!

  message.Body = "Срочно! " + txtSMSText.Text;

 } else {

  message.Body = txtSMSText.Text;

 }

 // Посылаем сообщение

 message. Send();

}

private void Form1_Load(object sender, EventArgs e) {

 smsInterceptor =

  new MessageInterceptor(InterceptionAction.NotifyAndDelete, true);

 smsInterceptor.MessageCondition =

  new MessageCondition(MessageProperty.Body,

  MessagePropertyComparisonType.StartsWith, "Срочно", true);

 smsInterceptor.MessageReceived +=

  new MessageInterceptorEventHandler(smsInterceptorMessageReceived);

}

При помощи ключевого слова using было объявлено несколько пространств имен, также была добавлена переменная smsInterceptor, после чего можно было объявлять функцию обработки сообщения smsInterceptor_MessageReceived. При получении SMS-сообщения с определенным текстом эта функция выводит соответствующую строку.

Но самое интересное происходит в событии Form_Load. Как только устройство принимает SMS-сообщение, оно перехватывается приложением для дальнейшей обработки. Если сообщение начинается словом «Срочно», то пользователь предупреждается о прибытии важного сообщения, после чего это сообщение удаляется. Подобное поведение обеспечивает параметр NotifyAndDelete.

После запуска приложения на форме будут отображены текстовое поле и флажок. После ввода текста сообщения нужно нажать кнопку Послать SMS. Код отправки сообщения позаимствован из предыдущего примера. Система должна отреагировать на прибытие нового сообщения с помощью специального уведомления, которое мы видели при разборе предыдущего примера (см. рис. 10.7).

Перейти на страницу:

Похожие книги