Перейти к содержимому

Как написать смс на андроиде

  • автор:

Отправка и получение SMS сообщений в Android

программирование отправки 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 и приведите его к виду:

xml version="1.0" encoding="utf-8"?>         

Настроим шаблон дизайна приложения. Откройте файл res/layout/main.xml и приведите его к виду

xml version="1.0" encoding="utf-8"?>      

В результате у Вас должен получиться следующий шаблон:

sms шаблон приложения

Перейдем к редактированию кода. В SMS activity напишем обработчик нажатия на кнопку. После щелчка мы должны проверить введен ли номер телефона и текстовое сообщение. Если все в порядке, мы вызываем функцию sendSMS(), которая отправляет сообщение.

package net.learn2develop.SMSMessaging; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.telephony.gsm.SmsManager; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; publicclass SMSextends Activity { Button btnSendSMS; EditText txtPhoneNo; EditText txtMessage; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnSendSMS=(Button) findViewById(R.id.btnSendSMS); txtPhoneNo=(EditText) findViewById(R.id.txtPhoneNo); txtMessage=(EditText) findViewById(R.id.txtMessage); btnSendSMS.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String phoneNo= txtPhoneNo.getText().toString(); String message= txtMessage.getText().toString(); if(phoneNo.length()>0&& message.length()>0) sendSMS(phoneNo, message); else Toast.makeText(getBaseContext(), "Please enter both phone number and message.", Toast.LENGTH_SHORT).show(); } }); } }

Напишем реализацию функции sendSMS()

private void sendSMS(String phoneNumber, String message) { PendingIntentpi= PendingIntent.getActivity(this,0, new Intent(this, SMS.class),0); SmsManager sms= SmsManager.getDefault(); sms.sendTextMessage(phoneNumber,null, message,pi,null); }

Для отправки SMS сообщения в Android используется класс SmsManager. в отличии от друих классов, мы не можем получить экземпляр SmsManager напрямую. Для решения этой задачи необходимо вызвать статический метод getDefault(), который возвращает требуемый объект класса SmsManager. Метод sendTextMessage() отправляет sms сообщение с помощью PendingIntent. Объект PendingIntent используется для определения activity, которая будет вызвана после отправки сообщения. В приведенном выше коде объект pi ссылается на ту же activity из которой он вызывается, то есть после отправки SMS сообщения activity не поменяется.

Если Вы хотите отслеживать состояние процесса отправки сообщения, вам понадобится два объекта PendingIntent и два объекта BroadcastReceiver

private void sendSMS(String phoneNumber, String message) { String SENT="SMS_SENT"; String DELIVERED="SMS_DELIVERED"; PendingIntent sentPI= PendingIntent.getBroadcast(this,0, new Intent(SENT),0); PendingIntent deliveredPI= PendingIntent.getBroadcast(this,0, new Intent(DELIVERED),0); //---когда SMS отправлено--- registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent arg1){ switch(getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(),"SMS sent", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(getBaseContext(),"Generic failure", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(getBaseContext(),"No service", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: Toast.makeText(getBaseContext(),"Null PDU", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: Toast.makeText(getBaseContext(),"Radio off", Toast.LENGTH_SHORT).show(); break; } } },new IntentFilter(SENT)); //---когда SMS доставлено--- registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent arg1){ switch(getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(),"SMS delivered", Toast.LENGTH_SHORT).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(getBaseContext(),"SMS not delivered", Toast.LENGTH_SHORT).show(); break; } } },new IntentFilter(DELIVERED)); SmsManager sms= SmsManager.getDefault(); sms.sendTextMessage(phoneNumber,null, message, sentPI, deliveredPI); }

В приведенном выше листинге объект sentPI используется для отслеживания процесса отправки. Когда SMS сообщение отправлено, генерируется первое событие onReceive для BroadcastReceiver. Именно здесь можно проверить статус процесса отправки. Объект PendingIntent (deliveredPI) используется для мониторинга доставки. Когда сообщение успешно доставлено, генерируется еще одно событие onReceive для BroadcastReceiver.

Теперь можно провести тесстирование приложения. При отладке на компьютере можно посылать сообщения от одного эмулятора другому. Для этого просто запустите два эмулятора (в папке android SDK зайдите в каталог Tools Emulator.exe). В качестве номера, куда вы отправляете SMS, нужно указать номер порта эмулятора. Его можно увидеть в загаловке окна эмулятора в круглых скобках. На рисунке показан пример отправки сообщения с эмултора 5554 на эмулятор 5556.

Отправка sms в эмуляторе

После успешной отправки SMS пользователю будет показано сообщение «SMS sent». После того, как сообщение будет принято на другом устройстве, пользователь увидит «SMS delivered». К сожалению, в случае тестирования на эмуляторе Вы не увидите этого сообщения. Возможность проверять успешность доставки доступна только на реальных устройствах.

Если Вы не хотите разбираться в тонкостях отправки SMS сообщений, то можете воспользоваться встроенным в Android стандартным приложением, дав ему задание через интент.

Intent sendIntent=new Intent(Intent.ACTION_VIEW); sendIntent.putExtra("sms_body","Content of the SMS goes here. "); sendIntent.setType("vnd.android-dir/mms-sms"); startActivity(sendIntent);

Получение SMS сообщений в Android

Помимо отправки SMS вы также можете организовать перехват входящих SMS сообщений. Делается это с помощью все того же объекта BroadcastReceiver.

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

xml version="1.0" encoding="utf-8"?>             

Теперь нужно добавить в проект новый класс SmsReceiver.java, который является наследником BroadcastReceiver. Внутри SmsReceiver нужно написать собственную реализацию метода onReceive()

package net.learn2develop.SMSMessaging; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; publicclass SmsReceiverextends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { } }

При получении SMS сообщения вызывается метод onReceive. SMS сообщение упаковывается и присоединяется к объекту intent (второй параметр метода onReceive). SMS сохраняется в массиве Object в PDU формате. Чтобы распаковать SMS сообщение нужно воспользоваться методом createFromPdu() класса SmsMessage. После этого можно отобразить сообщения с помощью класса Toast

package net.learn2develop.SMSMessaging; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.gsm.SmsMessage; import android.widget.Toast; publicclass SmsReceiverextends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //---получить входящее SMS сообщение--- Bundle bundle= intent.getExtras(); SmsMessage[] msgs=null; String str=""; if(bundle!=null) { //---извлечь полученное SMS --- Object[] pdus=(Object[]) bundle.get("pdus"); msgs=new SmsMessage[pdus.length]; for(int i=0; imsgs.length; i++){ msgs[i]= SmsMessage.createFromPdu((byte[])pdus[i]); str+="SMS from "+ msgs[i].getOriginatingAddress(); str+=" :"; str+= msgs[i].getMessageBody().toString(); str+="\n"; } //---Показать новое SMS сообщение--- Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); } } }

Вот, собственно, и все! Можете запускать эмуляторы и тестировать приложение. На приведенном ниже рисунке с помощью класса Toast показано полученное сообщение.

Получение sms в android

Заключение

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

Исходный код примера можно скачатьздесь.

Отправка SMS и MMS в Android

Для создания сообщений зайдите в них с рабочего стола. Сообщения в Android организованы несколько нестандартным способом. Здесь нет каталогов Входящие, Исходящие. Общение отображается с помощью диалогов. Этот способ делает переписку максимально простой и наглядной. Обмен SMS в Android напоминает чаты, которые используются в интернете.

В Android максимально убрали разницу между SMS и MMS. Теперь есть просто сообщения, а программа уже сама решает, отправлять это сообщение посредством SMS или MMS. Если сообщение очень длинное и превышает четыре стандартных SMS-сообщения, программа автоматически конвертирует его в MMS, так как понимает, что обычно одно MMS стоит дешевле, чем четыре SMS. Также, если необходимо вложить картинку, мелодию или видео (доступно очень много вариантов), сообщение будет передаваться, как MMS.

sms и mms в AndroidСоздание sms и mms в Android

Вы здесь: Android Manual Инструкции Отправка SMS и MMS в Android

Как написать и отправить СМС-сообщение со смартфона с ОС Андроид

Как написать и отправить СМС-сообщение со смартфона с ОС Андроид

Несмотря на то, что многие считают сервис коротких сообщений SMS пережитком прошлого, он до сих пор пользуется определенной популярностью. Да, его частично замещают бесплатные мессенджеры, однако операторы сотовой связи продолжают включать SMS в пакет базовых услуг. Поэтому не стоит забывать информацию о том, как отправить СМС со смартфона на операционной системе Андроид, ведь в отсутствии интернета нет иной возможности обмена текстовыми сообщениями.

Как отправить SMS-сообщение с Android

screenshot_1

Отправка СМС-ок на телефоне осуществляется через стандартное приложение «Сообщения». В нем хранятся все входящие и исходящие письма, отправленные или принятые средствами стандартной телефонии. Поэтому, если вы решите написать короткое письмо, воспользуйтесь инструкцией:

  • Откройте приложение «Сообщения».
  • Нажмите на кнопку создания нового письма (обычно обозначается символом «+»).

screenshot_2

  • Выберите адресата в соответствующем поле.
  • Напишите текст в поле, которое отобразится в нижней части экрана.
  • Нажмите на кнопку отправки (представлена в виде стрелочки).

screenshot_3

Обратите внимание, что SMS-сообщения тарифицируются в соответствии с объемом послания. Одна СМС-ка рассчитана на 160 символов. Следовательно, если текст вашего сообщения составит 170 символов, вы заплатите за два SMS. При этом отправка письма объемом в 10-20 символов ни капли не выгоднее послания на все 160 символов. СМС тарифицируются в большую сторону.

screenshot_4

В некоторых ситуациях, когда объем письма превышает несколько сотен символов, становится выгоднее использовать сервис MMS. В отличие от SMS-сообщений, ММС-ки позволяют уместить до 1600 символов, а также вставить в послание мультимедийный файл объемом до 300 Кб. Отправка в таком случае также осуществляется через приложение «Сообщения», а формат письма автоматически определяется размером текста и наличием мультимедиа.

Как правильно настроить SMS

Хотя сервис SMS-сообщений с нами уже несколько десятков лет, по умолчанию он может не работать на некоторых устройствах. Причина подобной проблемы заключается не в отсутствии поддержки СМС, а в незарегистрированной точке доступа для отправки коротких сообщений. Заполнить все необходимые параметры вы можете следующим образом:

  • Откройте номеронабиратель.
  • Введите запрос *#*# 4636#*#*.

screenshot_5

  • Нажмите на кнопку вызова.

screenshot_6

  • В появившемся меню перейдите в «Сведения об устройстве», а затем – «SMSC».
  • Укажите номер СМС-центра.

screenshot_7

  • Нажмите на кнопку «Обновить».

screenshot_8

Номер SMS-центра следует уточнять у оператора сотовой связи. У каждой компании он свой, а потому настройки будут отличаться. Для уточнения информации посетите официальный сайт фирмы, чьим клиентом вы являетесь, а затем воспользуйтесь поисковой строкой. При отсутствии необходимой информации – позвоните в службу поддержки оператора.

Возможные проблемы

При попытке отправить СМС-сообщение вы можете столкнуться с проблемой, когда письмо не доходит до адресата. В этой ситуации необходимо следовать рекомендациям:

  • Проверьте состояние лицевого счета.
  • Убедитесь в правильности настроек SMS.
  • Проверьте, не превышает ли объем сообщения установленные лимиты.
  • Повторите отправку письма.

screenshot_9

Если проблему не удается решить, то в обязательном порядке свяжитесь со службой поддержки оператора сотовой связи. Сотрудники компании должны проинструктировать вас, а также подсказать, какие данные необходимо заполнить для восстановления работы сервиса СМС.

Как отправить SMS или MMS-сообщение на смартфоне Samsung Galaxy

SMS-сообщение — это один из базовых способов связи через смартфон. Если вы не можете дозвониться до абонента или у вас не работает интернет, отправьте ему SMS-сообщение с нужной информацией.

Современные смартфоны поддерживают отправку не только текста (SMS) и фото (MMS), но и видео, стикеров и аудиосообщений.

  1. Как отправить сообщение
  2. Как отправить голосовое сообщение
  3. Как отправить фото или видео

Отправка SMS-сообщений

Как отправить сообщение

Нажмите на кнопку «Начать новый диалог» Нажмите на кнопку «Начать новый диалог»

Шаг 1. Откройте приложение Сообщения и нажмите на кнопку Начать новый диалог в правом нижнем углу. Если нужный абонент уже писал вам, откройте диалог с ним из списка и перейдите к шагу 4.

Введите номер получателя или нажмите «+» Введите номер получателя или нажмите «+»

Шаг 2. Нажмите на «+» для выбора из списка сохраненных контактов. Если получателя нет в списке контактов, введите в поле его номер телефона и перейдите к шагу 4.

Добавьте получателя з списка контактов Добавьте получателя з списка контактов

Шаг 3. Выберите получателя и нажмите кнопку Готово.

Нажмите «Отправить» Нажмите «Отправить»

Шаг 4. Нажмите на поле, расположенное в нижней части экрана, для отображения экранной клавиатуры. Наберите сообщение. Для отправки нажмите на кнопку Отправить справа от поля.

Сообщение отправлено Сообщение отправлено

Шаг 5. Отправленное сообщение появится в окне текущего диалога.

Если в данных контакта указано несколько телефонных номеров, нажмите здесь

Если в данных контакта указано несколько номеров, на экране появится окно со списком доступных телефонов. Выберите нужный номер. Для подтверждения нажмите Выбор (отправить на этот номер только в этот раз) или на Назначить по умолчанию (чтобы всегда отправлять SMS на этот номер абонента).

Несколько номеров телефона у контакта

Если вам нужно отправить одинаковое SMS-сообщение разным адресатам, нажмите здесь

Выберите несколько контактов Выберите несколько контактов

Во время выбора контактов, вы можете выбрать несколько человек из списка контактов или указать несколько телефонных номеров через запятую.

Отправьте сообщение Отправьте сообщение

Введите текст сообщения и нажмите «Отправить». Смартфон создаст один общий диалоги и отправит столько SMS-сообщений, сколько было указано абонентов.

Ответы в личных диалогах Ответы в личных диалогах

У получателей SMS будет указан только контакт отправителя. Ответ на сообщение придет в личный диалог с абонентом.

В SMS-сообщении можно использовать эмодзи (смайлики). Чтобы добавить эмодзи в сообщение, нажмите на значок в правом нижнем углу поля ввода текста. Затем выберите и нажмите на нужный эмодзи — он появится в сообщении.

Эмози в SMS-сообщении

В этом же окне вы можете выбрать стикер, анимированную картинку или AR emoji, но они будут отправлены как MMS-сообщение.

Как отправить голосовое сообщение

Нажмите на кнопку для записи голосового сообщения Нажмите на кнопку для записи голосового сообщения

Для начала записи нажмите и удерживайте кнопку Запись голосового сообщения в правом нижнем углу диалога.

Надиктуйте сообщение Надиктуйте сообщение

Удерживая кнопку , надиктуйте сообщение. Для завершения записи отпустите кнопку .

Проиграть и отправить запись Проиграть и отправить запись

Вы можете прослушать запись, нажав на кнопку
Play . Если сообщение нужно перезаписать, нажмите на красный крестик для удаления записи. Чтобы отправить сообщение, нажмите на кнопку Отправить .

Голосовое сообщение отправлено Голосовое сообщение отправлено

Голосовое сообщение будет отправлено как MMS.

Как отправить фото или видео

Нажмите на кнопку «Камера» Нажмите на кнопку «Камера»

Чтобы сделать фото или записать видео, нажмите на кнопку Камера и выберите нужное действие. Включится камера смартфона и вы сможете сделать с помощью нее снимок или видео. После преобразования в ММS-сообщение, файл можно будет отправить, нажав кнопку .

Надиктуйте сообщение Надиктуйте сообщение

Чтобы прикрепить изображение из памяти телефона, нажмите на значок Изображение . Внизу экрана откроется галерея изображений начиная с самых новых сохраненных файлов. Либо откройте приложение Галерея и выберите изображение из нее. Для этого нажмите на значок приложения
внизу в центре.

Выберите и отправьте изображение Выберите и отправьте изображение

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

Изображение отправлено Изображение отправлено

Изображение и видео отправляются как MMS.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *