Теперь воспользуемся только что созданным приложением для отправки SMS- сообщений и добавим широковещательный приемник для прослушивания действия android.provider.Telephony. SMS_RECEIVED. Это действие рассылается Android, когда SMS-сообщение принимается устройством. Имея зарегистрированный приемник, приложение будет уведомляться о получении SMS-сообщений.
Первый шаг в мониторинге входящих SMS-сообщений состоит в запросе прав на их прием. Для этого в файл манифеста необходимо добавить права android.permission. RECEIVE_SMS. Для реализации приемника понадобится написать класс, расширяющий android.content.BroadcastReceiver, и затем зарегистрировать его в файле манифеста. В о и содержимое файла AndroidManifest.xml, и Java- код класса приемника. Обратите внимание, что в файле манифеста присутствуют оба права доступа, потому что нам также нужно право на отправку для созданной ранее активности.
Код в первой части представляет собой определение манифеста для широковещательного приемника, необходимое для перехвата SMS-сообщений. MySMSMonitor — класс монитора SMS. Этот класс реализует абстрактный метод onReceive, который вызывается системой, когда появляется SMS-сообщение. Один из способов тестирования этого приложения состоит в использовании экрана Emulator Control (Управление эмулятором) среды Eclipse. Запустите приложение в эмуляторе и выберите пункт меню WindowOShow ViewOOtherOAndroidOEmulator Control (ОкноОПоказать представление^Другое^AndroidoУправление эмулятором). Пользовательский интерфейс позволяет отправлять данные эмулятору, чтобы имитировать SMS-сообщение или телефонный звонок. , отправить SMS-сообщение эмулятору можно, заполнив поле Incoming number (Входящий номер) и выбрав переключатель SMS. После этого следует ввести некоторый текст в поле Message (Сообщение) и щелкнуть на кнопке Send (Отправить). В результате SMS-сообщение будет отправлено эмулятору и вызван метод onReceive класса BroarcastReceiver. Хотите свой дом, тогда http://aerolit-gc.ru/sendvich-paneli.html тут для вас.
Метод onReceive получит широковещательное намерение, которое будет содержать объект SmsMessage в качестве дополнительных данных. Чтобы извлечь SmsMessage, необходимо вызвать intent.getExtras .get("pdus"). Этот вызов вернет массив объектов, определенных в режиме PDU (Protocol Description Unit — единица описания протокола) — принятым стандартным способом представления SMS-сообщений. Затем PDU можно преобразовать в Android-объекты SmsMessage, . В коде видно, что PDU получаются в виде массива объектов от намерения. После этого конструируется массив объектов SmsMessage с размером, равным размеру массива PDU. Наконец, выполняется итерация по массиву PDU с созданием объектов SmsMessage из объектов PDU посредством вызова SmsMessage.createFromPdu. То, что делается после чтения входящего сообщения, должно быть сделано быстро. Приемник широковещательных сообщений получает в системе высокий приоритет, но эта задача должна быть завершена быстро, и ее не следует помещать в фоновый режим для просмотра пользователем. Поэтому выбор ограничен. Никакой работы, связанной с пользовательским интерфейсом, напрямую делаться не должно. Выдача уведомления подходит, поскольку она приводит к запуску службы для продолжения работы. Как только метод onReceive завершает работу, процесс, в котором выполняется метод onReceive, может быть уничтожен в любой момент. Запуск службы — это нормально, но привязка к ней не годится, потому что это потребовало бы от процесса длительного
существования, что может и не случиться. За дополнительной информацией о широковещательных приемниках обращайтесь в главу
Продолжим обсуждение SMS и посмотрим, как можно работать с разными папками SMS.
Опубликовал Kest
February 14 2015 13:09:07 ·
0 Комментариев ·
4202 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.