Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #68, АВГУСТ 2004 г.

Симбиоз человека и телефона

Денис Мингулов

Xakep, номер #068, стр. 068-102-2


Также есть несколько примеров готовых программ. Рассмотрим на примере Series 60 SDK 1.2. Двигай сюда: \Symbian\6.1\Series60\Series60Ex\. Войди в пример HelloWorld. Программа поделена на каталоги group (здесь лежат файлы проекта bld.inf и helloworld.mmp, а также файл ресурсов helloworld.rss), inc (подключаемые файлы заголовков), sis (здесь helloworld.pkg - для создания готового пакета с программой helloworld.sis) и src (сами исходные тексты программы). В больших программах файлы с ресурсами обычно помещают в каталог data, а также добавляют каталог aif с информацией о программе и иконками.

Для компилирования примера надо войти в каталог с файлом bld.inf и из командной строки вдолбить следующие команды:

bldmake bldfiles

Пути в Path должны были прописаться при установке, после выполнения в этом каталоге появится файл abld.bat.

abld build wins udeb

Происходит компиляция программы.

epoc

Запускается эмулятор. Обычный экран телефона - как всегда, новое приложение ты можешь увидеть самым последним пунктом в меню. Если же ты хочешь сделать приложение для телефона, то вместо второй команды делай так:

abld build thumb urel

Затем переходи в каталог с .pkg-файлом, и выполняй (с правильным именем файла, конечно):

makesis helloworld.pkg

Появится файл helloworld.sis, который можно переслать на телефон и свободно установить.

Добавляем «черный список» SMS

За основу возьмем HelloWorld и начнем изменять его. На сайте Nokia есть несколько дополнительных примеров, которые не входят в SDK. Посмотри их: www.forum.nokia.com -< Resources -< Technologies -< Symbian -< Code and Examples. Здесь, кроме всего прочего, ты обнаружишь SMS Sending Example v1.4 для Nokia Series 80 1.0 (9200. Скачай его, изучи врезку «Пример кода» и проверь себя по врезке «Особенности примера SMS».

В SMS Sending выполняются все необходимые действия: распознается SMS’ка, и если она ненужная, то никакого звука или уведомления на экран не выдается - сообщение считается уже прочитанным. Его можно удалить, используя функцию DeleteMessagesFromInboxL.

SMS’ка проверяется на соответствие функции MessageReceivedL по первым 4-м символам в теле письма. Чтобы прога проверяла не символы, а обратный адрес, поменяем функцию на CBaseMtm::AddresseeList().

Исправленная часть MessageReceivedL

_LIT(KOurNum,"Max (+79001234567)"); // проверяемый номер

for(int i=0;i>(smsMtm-<AddresseeList()).Count();i++)

if ((smsMtm-<AddresseeList())[i]==KOurNum) // сообщение нам

{

// обрабатываем сообщение, да, оно наше

returnVal = ETrue;

break;

}

Обрати внимание, что это массив адресов. В качестве обратного адреса используется не только номер телефона - сервер сообщений использует все данные, доступные ему, например, из адресной книги. Но ты можешь выявлять в строке настоящий номер и проверять только его.

Теперь нам надо, используя полученные знания, добавить к HelloWorld «черный список». Дополняем файл MMP нужными библиотеками, добавляем необходимые #include. Теперь создаем отдельный класс CSmsReceiveHandler, в который переносим всю обработку SMS как клиента сервера сообщений. В AppUi классе допишем CMsvHandler* iReceiveHandler, а также дополнительно наследуем его от MMsvObserver. Для подробного изучения изменения классов смотри исходный текст готовой программы. Если хочешь, можно просто перенести нужные части к CHelloWorldAppUi, но если программа будет расти, это будет мешать.

Назад на стр. 068-102-1  Содержание  Вперед на стр. 068-102-3