- Отправка и получение SMS сообщений в Android
- Отправка SMS сообщений в Android
- Получение SMS сообщений в Android
- Заключение
- Android: Обработка СМС
- 0. Вместо вступления
- 1. Перехватываем СМС
- 2. Обрабатываем СМС
- 7 лучших бесплатных SMS-приложений для Android
- Лучшее в плане темы: GO SMS Pro
- Лучшее в плане настройки: Handcent Next SMS
- Лучшее в плане простоты: Android Messages
- Лучшее для нескольких устройств: MySMS
- Лучшее в плане безопасности: Signal Private Messenger
- Лучшее в плане комплексного обслуживания: chomp SMS
- Лучшее в плане внешнего вида: QKSMS
- Лучшее в плане универсальности: EvolveSMS
Отправка и получение SMS сообщений в Android
Как это ни удивительно, SMS сообщений сегодня остаются одним из самых востребованных сервисов, что вполне объясняет интерес, проявляемый Android разработчики к этой тема. Из данного урока Вы узнаете, как программно отправлять и получать SMS сообщения. Будет показано, как провести тестирование приложения на эмуляторе.
Отправка SMS сообщений в Android
Создайте в Eclipse новый проект со следующими параметрами:
- Project Name: SMSMessaging
- Package name: net.learn2develop.SMSMessaging
- Activity Name: SMS
- Application Name: SMS App
Для того, чтобы наше прилоение могло работать с SMS, ему необходимо дать соответствующие разрешения: SEND_SMS для отправки и RECEIVE_SMS — для получения. Откройте файл AndroidManifest.xml и приведите его к виду:
Настроим шаблон дизайна приложения. Откройте файл res/layout/main.xml и приведите его к виду
В результате у Вас должен получиться следующий шаблон:
Перейдем к редактированию кода. В SMS activity напишем обработчик нажатия на кнопку. После щелчка мы должны проверить введен ли номер телефона и текстовое сообщение. Если все в порядке, мы вызываем функцию sendSMS(), которая отправляет сообщение.
Напишем реализацию функции sendSMS()
Для отправки SMS сообщения в Android используется класс SmsManager. в отличии от друих классов, мы не можем получить экземпляр SmsManager напрямую. Для решения этой задачи необходимо вызвать статический метод getDefault(), который возвращает требуемый объект класса SmsManager. Метод sendTextMessage() отправляет sms сообщение с помощью PendingIntent. Объект PendingIntent используется для определения activity, которая будет вызвана после отправки сообщения. В приведенном выше коде объект pi ссылается на ту же activity из которой он вызывается, то есть после отправки SMS сообщения activity не поменяется.
Если Вы хотите отслеживать состояние процесса отправки сообщения, вам понадобится два объекта PendingIntent и два объекта BroadcastReceiver
В приведенном выше листинге объект sentPI используется для отслеживания процесса отправки. Когда SMS сообщение отправлено, генерируется первое событие onReceive для BroadcastReceiver. Именно здесь можно проверить статус процесса отправки. Объект PendingIntent (deliveredPI) используется для мониторинга доставки. Когда сообщение успешно доставлено, генерируется еще одно событие onReceive для BroadcastReceiver.
Теперь можно провести тесстирование приложения. При отладке на компьютере можно посылать сообщения от одного эмулятора другому. Для этого просто запустите два эмулятора (в папке android SDK зайдите в каталог Tools Emulator.exe). В качестве номера, куда вы отправляете SMS, нужно указать номер порта эмулятора. Его можно увидеть в загаловке окна эмулятора в круглых скобках. На рисунке показан пример отправки сообщения с эмултора 5554 на эмулятор 5556.
После успешной отправки SMS пользователю будет показано сообщение «SMS sent». После того, как сообщение будет принято на другом устройстве, пользователь увидит «SMS delivered». К сожалению, в случае тестирования на эмуляторе Вы не увидите этого сообщения. Возможность проверять успешность доставки доступна только на реальных устройствах.
Если Вы не хотите разбираться в тонкостях отправки SMS сообщений, то можете воспользоваться встроенным в Android стандартным приложением, дав ему задание через интент.
Получение SMS сообщений в Android
Помимо отправки SMS вы также можете организовать перехват входящих SMS сообщений. Делается это с помощью все того же объекта BroadcastReceiver.
Чтобы Ваше приложение могло перехватывать SMS-ки, нужно в файле AndroidManifest.xml добавить элемент . В приведенном ниже примере для получения сообщений будет использоваться класс SmsReceiver.
Теперь нужно добавить в проект новый класс SmsReceiver.java, который является наследником BroadcastReceiver. Внутри SmsReceiver нужно написать собственную реализацию метода onReceive()
При получении SMS сообщения вызывается метод onReceive. SMS сообщение упаковывается и присоединяется к объекту intent (второй параметр метода onReceive). SMS сохраняется в массиве Object в PDU формате. Чтобы распаковать SMS сообщение нужно воспользоваться методом createFromPdu() класса SmsMessage. После этого можно отобразить сообщения с помощью класса Toast
Вот, собственно, и все! Можете запускать эмуляторы и тестировать приложение. На приведенном ниже рисунке с помощью класса Toast показано полученное сообщение.
Заключение
В этой небольшой статье было показано, как можно отправлять и получать SMS сообщения в Android. Это очень интересная и нужная возможность. Например, вы можете написать приложение, которое будет отслеживать положение телефона. Вы можете отправлять зашифрованные SMS сообщения этому приложению, и оно будет отправлять вам ответ с координатами аппарата.
Исходный код примера можно скачатьздесь.
Источник
Android: Обработка СМС
0. Вместо вступления
Периодически (когда у меня выпадает свободный вечер, и наш «клуб» организует игру) я играю в регбол. «Клуб» организован таким образом, что в день игры всем участникам приходит СМС такого вида:
Регбол! Сегодня в 19-30. Двор школы №30: ул. Володарского, 20. Открытая площадка с резиновым покрытием. Тел. 8 (951) ***-**-**.
И вот я подумал — почему бы не написать небольшое приложение, которое будет отлавливать эти сообщения, и забивать их в гугл-календарь. Зачем? Да, в основном, just for fun, ибо я не настолько занятой человек, чтобы мне были жизненно необходимы автоматические секретари.
Итак, приложение будет уметь следующее:
- Следить за входящими сообщениями. Если пришло сообщение от адресата RM FIGHT, то нужно сверить текст сообщения с шаблоном, и при совпадении создать мероприятие в гугл-календаре. Если же текст сообщения с шаблоном не совпадает (например, просто какие-то новости пришли), то сохраняем сообщение в базе, чтобы потом можно было его прочитать.
- Показывать сообщения от этого адресата, не попадающие в категорию «Оповещение об игре» (новости, реклама и т.д.).
В рамках статьи я полагаю, что у читателя есть базовые знания — как создать проект, что такое файл Manifest, и с чего вообще начинать разработку под андроид — на этот счет есть куча разных туториалов, и здесь на этом останавливаться не будем. В то же время статья не предназначена для продвинутых андроид-девелоперов, в ней будут рассматриваться достаточно базовые вещи, вроде мониторинга и обработки смс, работы с базой данных, подключения по HTTP.
Итак, приступим. Кстати, используемая версия SDK — 14 (Android 4.0).
1. Перехватываем СМС
Для мониторинга входящих СМС первым делом нам необходимо запросить разрешение на их получение. Для этого в файл AndroidManifest.xml необходимо добавить запись вида:
Следующим шагом будет реализация монитора для прослушивания входящих сообщений. Для этого в манифест-файле регистрируем receiver:
Здесь мы установили приоритет равным 100, чтобы наше приложение получило доступ к входящему СМС раньше стандартного обработчика СМС, которое имеет нулевой приоритет. После того, как наше приложение обработает сообщение, нет смысла отдавать его системе, и помещать в папку Входящие.
Теперь создаем класс, расширяющий BroadcastReceiver :
В этом классе реализуется абстрактный метод onReceive() , который вызывается системой каждый раз при получении сообщения. В методе прописываем:
Здесь мы получаем сообщение с помощью метода intent.getExtras().get(«pdus») , который возвращает массив объектов в формате PDU — эти объекты мы потом приводим к типу SmsMessage с помощью метода createFromPdu() .
Теперь внимание. То, что мы делаем после получения сообщения, должно исполняться быстро. Broadcast receiver получает в системе высокий приоритет, но он работает в фоновом режиме и должен выполняться за короткое время, так что наши возможности ограничены. Например, мы можем сгенерировать уведомление или запустить службу, чтобы продолжить обработку в ней. Поэтому мы проверим отправителя сообщения, и если это уведомление об игре — мы вытащим текст сообщения и запустим службу, в которой уже и будем проводить обработку этого сообщения.
Дописываем в методе onReceive() :
Здесь мы составляем текст сообщения (в случае, когда сообщение было длинным и пришло в нескольких смс-ках, каждая отдельная часть хранится в messages[i] ) и вызываем метод abortBroadcast() , чтобы предотвратить дальнейшую обработку сообщения другими приложениями.
2. Обрабатываем СМС
В предыдущем пункте мы остановились на том, что запускаем службу для обработки смс с помощью метода startService() . Собственно, что такое службы и с чем их едят хорошо описано на официальном сайте, поэтому здесь на этом останавливаться не будем.
Создаем класс SmsService , расширяющий класс Service :
Поскольку у нас локальная служба, метод onBind() возвращает null.
Для вывода уведомлений нам понадобится вспомогательный метод showNotification():
В методе onStartCommand() прописываем:
Осталось, собственно, реализовать метод smsProcess() , который добавит смс в базу и сформирует мероприятие в гугл-календаре. Этим и займемся в следующей части статьи.
UPDATE: выложил код на GitHub. Со второй частью статьи пока не успеваю, слишком уж загружен по работе. Надеюсь в ближайшее время с этим вопросом разберусь.
Источник
7 лучших бесплатных SMS-приложений для Android
Не все люди используют WhatsApp или Facebook Messenger: есть моменты, когда по-прежнему предпочитается доброе старое SMS-сообщение. Мы собрали список лучших приложений для этого.
Многие из вас, вероятно, располагают возможностью отправки множества сообщений в рамках вашего тарифного плана, но давайте посмотрим правде в глаза: эти СМС-сообщения не очень популярны по сравнению с такими приложениями, как WhatsApp и Facebook Messenger. Возможно, вы захотите отключить Facebook и WhatsApp, памятуя о вопросах конфиденциальности данных. Тогда имеет смысл загрузить SMS-приложение, чтобы иметь лучший текстовый опыт с повышенно безопасностью, настройками и т.д.
Лучшее в плане темы: GO SMS Pro
GO SMS Pro – отличное универсальное приложение для текстовых сообщений. Оно действительно помогает вам максимально использовать неограниченные текстовые сообщения тарифного плана. В этом приложении присутствуют некоторые рекламные объявления, но зачастую, чтобы увидеть их, вам нужно щелкнуть по анимационным картинкам. У вас будут отличные функции, но лучшее, что есть в этом приложения – темы и стикеры.
Темы в приложении GO SMS Pro действительно хорошо разработаны и прекрасно интегрируются с его интерфейсом. Вам необходимо загрузить их из Google Play, при этом, как только вы их скачаете, вы сможете их легко настроить. Многие из тем бесплатны, но если вы хотите каких-то особенных вариантов, вам нужно будет дополнительно заплатить.
Опция «Отложить на отправку» – хорошая идея активации на случай, если вы допустили ошибку. Это бывает не так уж редко: у нас было много сообщений, которые мы отправляли, но потом очень хотели обратить время вспять. Если вы когда-либо случайно отправляли что-нибудь ругательное контакту из вашего списка, то вы, вероятно, захотите использовать функцию черного списка, чтобы подобные сообщения не могли отправляться.
Лучшее в плане настройки: Handcent Next SMS
Требуется несколько минут, чтобы настроить Handcent Next SMS, при этом данное приложение включает в себя отличные функции настройки, которые дадут вам гладкий персональный опыт, делая текстовые сообщения приятными и похожими на приложения-месседжеры, такие как WhatsApp или WeChat. Handcent Next SMS также располагает такими функциями, как праздничные электронные открытки или текстовые сообщения для дней рождения или праздников.
Возможности настройки Handcent действительно хороши, и мы настоятельно рекомендуем вам воспользоваться ими. Вы можете использовать скин-оболочки для интерфейса этого приложения – есть несколько хороших вариантов на выбор, которые часто обновляются. Также имеются весьма неплохие темы. Встроенные функции настройки наверняка придутся вам по душе, так как они меняют способ вашего взаимодействия с текстовыми сообщениями в целом.
Лучшее в плане простоты: Android Messages
Мы не поклонники Hangouts, которое усложняет простой процесс отправки сообщений. Android Messenger – это совсем другая история. Оно использует многие из лучших качеств Hangouts, без лишних действий. Messages обладает неброским интерфейсом, и, помимо отправки текстовых сообщений, вы также можете делать фотоснимки и записывать звуковые сообщения внутри этого приложения. Это типичное приложение от Google, располагающее основами того, что оно должно делать.
Лучшее для нескольких устройств: MySMS
MySMS имеет восторженные отзывы от СМИ и пользователей. Оно доступно для Windows, Mac и веб-браузеров, а также для Android, что означает, что вы можете отправлять сообщения с компьютера или планшета с помощью номера Android-телефона.
MySMS также поддерживает групповые сообщения и MMS, планирование сообщений, экспорт сообщений и резервное копирование и может подключаться к таким сервисам, как Evernote, Dropbox и Google Drive. Многие из расширенных функций требуют премиального членства, но 9,99 долларов в год вряд ли серьезно опустошат ваш кошелек за использование этого приложения.
Лучшее в плане безопасности: Signal Private Messenger
Если вы часто совершаете промахи по неосторожности, то трудно упустить из виду Signal Private Messenger. Оно более чем безопасно – вы даже не можете делать скриншоты этого приложения. Signal Private Messenger (также известное как TextSecure) будет шифровать ваши личные сообщения с помощью сквозных протоколов шифрования, как только вы зарегистрируете ваш номер.
Как вы, вероятно, знаете, у служб безопасности многих стран есть привычка перехватывать SMS-контент, когда он проходит через центры обработки данных. Signal обрабатывает только зашифрованный контент, поэтому ваши сообщения безопасны в пути. Все ваши вложения также зашифрованы.
Лучшее в плане комплексного обслуживания: chomp SMS
chomp SMS существует уже давно и стало одним из самых популярных Android-приложений для Android. Его функции включают в себя огромный массив эмоджи, блокировку приложения через пароль, блокировку сообщений, множество параметров конфиденциальности, черные списки и всплывающие окна быстрого ответа, не говоря уже о тонне настроек, плюс оно предлагает совместимость с Pushbullet и Android Wear.
Лучшее в плане внешнего вида: QKSMS
QKSMS является одним из самых красивых приложений для SMS, которые мы видели, предлагая Material Design, а также ряд тем, ночной режим, настройку, быстрые ответы, групповые сообщения, расписание сообщений и многое другое в среде без рекламы. Основное приложение бесплатное, но если вы хотите разблокировать все параметры цвета и расширенные функции, вы можете получить премиальный режим, заплатив 1,99 доллара.
Лучшее в плане универсальности: EvolveSMS
EvolveSMS – это SMS-приложение с поддержкой Google, которое мы желали бы видеть на месте Hangouts. EvolveSMS весьма функционально, с поддержкой мультимедийных сообщений (включая GIF) и совместимостью с Smartwatch. Оранжевый по умолчанию интерфейс выглядит великолепно, но вы также можете получить больше тем, если потратите немного денег за пакет настроек.
Прокрутка между беседами и панелью навигации осуществляется очень легко, плюс, есть множество предустановленных параметров настройки. Если вы хотите, чтобы SMS-приложение делало все, что вам нужно, тогда используйте именно Evolve.
Вы предпочли бы какое-либо из этих приложений WhatsApp или messenger? Расскажите нам об этом в комментариях.
Источник