Симбиоз человека и телефона Денис Мингулов 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, но если программа будет расти, это будет мешать. |