Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Как отправить смс с телефона, дополненый код!


Автор: Samuil 4.10.2006, 04:20
Hi all people!!! Вот по просьбам некоторых форумовцов выкладываю дороботанную мной прогу по отправке смс с телефона из java приложения! Комменты на русском! Материал был взят из статьи: "Основы Wireless Messaging API (WMA). Отправка и получение SMS" с сайта www.MobiLab.ru , Я всего лишь доработал ее и написал кооменты!
Вот код:

Код


import javax.microedition.io.Connector;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;

public class smsClass extends MIDlet implements CommandListener {

  private TextBox textF; // Текстовое поле для ввода текста сообщений
  private TextField numF; // Текстовое поле для ввода номера сообщений
  private Display display; // Дисплей
  private Command next; // для перехода в режим ввода номера
  private Command send; // Отправляем сообщение
  private String getnum = ""; // Переменная для хранения номера
  private String getmes = ""; // Переменная для хранения сообщения

  public void startApp() {
    display = Display.getDisplay(this);
    next = new Command("Next", Command.OK, 1);
    textF = new TextBox("Введите текст sms",
                        "Hello World it SMS from Midlet!!!", 100, TextField.ANY);
    textF.setCommandListener(this);
    textF.addCommand(next);
    display.setCurrent(textF);
  }

  public void pauseApp() {}

  public void destroyApp(boolean _boolean) {
    this.notifyDestroyed();
  }

  public void numberField() {
    Form form = new Form("Enter the number");
    //----------------------------------------------------------------//
    // Введите полный номер типа: +99890 и номер телефона все слитно!-//
    //----------------------------------------------------------------//
    numF = new TextField("Numer", "", 15, TextField.NUMERIC);
    send = new Command("Send SMS", Command.OK, 1);
    form.append(numF);
    form.setCommandListener(this);
    form.addCommand(send);
    display.setCurrent(form);
  }

  public void setSMS() {

    try {
      String addr = "sms://+" + getnum; // Строка адреса
      MessageConnection conn = (MessageConnection) Connector.open(addr);
      TextMessage msg = (TextMessage) conn.newMessage
                        (MessageConnection.TEXT_MESSAGE);
      msg.setPayloadText(getmes); // Ложим в обьект msg наше сообщение из getmes
      conn.send(msg); // Отправляем наше сообщение

    } catch (Exception e) {}
  }

  public void commandAction(Command c, Displayable displayable) {
    if (next == c) { // Переходим в режим ввода номера
      numberField(); // вызываем метод
    }
    if (send == c) { // переходим в метод по отправке сообщений
      getnum = numF.getString(); // Берем данные из т. поля и ложим в getnum
      getmes = textF.getString(); // аналогично
      setSMS(); // зовем метод
    }
  }
}

Автор: fpmk 5.10.2006, 16:57
И что это работает ?

Автор: Dancer 5.10.2006, 17:54
Да работает, проверил на Motorola C380
Сообщение отправилось из мидлета, пришло как нативное SMS.
Номер нужно набирать без плюса вначале (это в прниципе из кода видно).

Автор: Samuil 5.10.2006, 19:07
Тестил на nok 6630, и все ок!

Автор: nerezus 3.1.2007, 13:17
А что делать, если пишет, что javax.wireless.messaging does not exist ?

WTK 2.2

Автор: W0LF 3.1.2007, 13:22
Где пишет?

Автор: nerezus 3.1.2007, 13:34
В KToolbar при нажатии на Build

Автор: W0LF 3.1.2007, 13:40
Project->Settings->Api Selection
Поставь там галочку против JSR205

Автор: nerezus 3.1.2007, 14:01
спс

Автор: javastic 4.1.2007, 16:10
Samuil, добавлено в примеры.

Автор: Lesik 4.1.2008, 15:21
Здравствуйте, я новенький. Извините, если что не так.
На телефоне Сименс С55 не запускается эта (успешно скомпилированная) программа.
На телефоне пишется Unable to load class javax.wireless.messaging.Message
В эмуляторе работает.
Полагаю причиной является MIDP 1.0 без поддержки WMA в моем телефоне.
Что можно сделать с ЭТИМ телефоном, чтобы заработало?
Фак вроде просматривал...

Автор: Samuil 4.1.2008, 16:00
Lesik, Выбросить! Да Ты правильно заметил что проблема в MIDP. Исправить ее нельзя! ЗЫ! К сожалению.

Автор: Lesik 5.1.2008, 12:07
Цитата(Samuil @ 4.1.2008,  16:00)
Lesik, Выбросить! Да Ты правильно заметил что проблема в MIDP. Исправить ее нельзя! ЗЫ! К сожалению.

спасибо, понятно!

Автор: 123qw 20.10.2010, 22:17
в эмуляторе нормально, а на телефоне не влазит номер, че делать?

Автор: ivanovpv 21.10.2010, 08:27
Я чего-то не догоняю - в чем же хумор то? Отправить SMS можно на любой порт (в данном случае "нулевой"), а вот слушать "нулевой" порт мидлет не может. Исходников с примером отправки SMS на любой порт в сети множество, представленный образец - ничем не лучше и не хуже. Вот если бы были исходник как слушать "нулевой" порт, иначе говоря контролировать сообщения приходящие на Inbox - вот это было бы круто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)