Итак, мы научились отправлять 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;
new MessageInterceptorEventHandler(smsInterceptorMessageReceived);
}
При помощи ключевого слова
using
было объявлено несколько пространств имен, также была добавлена переменная
smsInterceptor
, после чего можно было объявлять функцию обработки
сообщения
smsInterceptor_MessageReceived
. При получении SMS-сообщения с определенным текстом эта функция выводит соответствующую строку.
Но самое интересное происходит в событии
Form_Load
. Как только устройство принимает SMS-сообщение, оно перехватывается приложением для дальнейшей обработки. Если сообщение начинается словом «Срочно», то пользователь предупреждается о прибытии важного сообщения, после чего это сообщение удаляется. Подобное поведение обеспечивает параметр
NotifyAndDelete
.
После запуска приложения на форме будут отображены текстовое поле и флажок. После ввода текста сообщения нужно нажать кнопку
Послать SMS
. Код отправки сообщения позаимствован из предыдущего примера. Система должна отреагировать на прибытие нового сообщения с помощью специального уведомления, которое мы видели при разборе предыдущего примера (см. рис. 10.7).
Теперь следует повторить операцию. Только на этот раз надо взвести флажок
Пометить как срочное
. В этом случае при отправке сообщения в начало текста вставляется дополнительное слово «Срочно». После нажатия кнопки приложение должно перехватить прибытие SMS-сообщения, так как теперь оно содержит ключевое слово, которое определялось в параметре
StartWith
. Как только это произойдет, сообщение будет удалено, а пользователь получит уведомление о прибытии срочного сообщения (рис. 10.8). Но следует помнить, что для перехвата сообщения приложение должно быть запущено.
Рис. 10.8. Прием срочного сообщения
Данный пример предоставляет разработчику весьма широкие возможности. Представьте себе, что ваша компания рассылает своим сотрудникам особым образом отформатированные сообщения. Программа может обработать эти сообщения и автоматически создать новые записи в списках Контакты или Встречи. И теперь сотруднику достаточно только взглянуть на экран, чтобы увидеть приятную новость, что сегодня компания выдает премию, за которой нужно подъехать в офис.
ВНИМАНИЕ
Для примеров, связанных с SMS-сообщениями, нужно использовать эмуляторы и устройства, имеющие возможность работы с SMS.
Телефония
Разработчик может использовать возможности телефонии при помощи класса
Miсrosoft.WindowsMobile.Telephony.Phone
. Используя метод этого класса
Talk
, можно программно набрать нужный телефонный номер. При использовании класса
Phone
перед началом работы нужно установить ссылку на сборку
Microsoft.WindowsMobile.Telephony
. Пример использования этого метода приведен в листинге 10.12.
Листинг 10.12
using Microsoft.WindowsMobile.Telephony;
// Объявляем переменную Phone
phone = new Phone;
// Набираем номер
// Перед набором запрашиваем подтверждение
phone.Talk("4255551212", true);
Обратите внимание на набираемый номер. С помощью данного номера разработчик может делать звонок на эмуляторе. Эмулятор сначала запросит подтверждение набора номера (рис. 10.9) и затем будет звонить по указанному номеру.