motofan logo
> 

Отправка Смс Из Джава Приложения

lv333
сообщение 23.2.2006, 12:41


Ветеран
*****

Группа: Пользователи
Сообщений: 656
Регистрация: 11.7.2005
Из: Украина, Киев
Пользователь №: 45 916
Модель телефона: Motorola Defy+
Прошивка: СМ 10

Рейтинг: 199.6



Информация взята отсюда http://www.xakep.ru/magazine/xa/075/114/4.asp

Код

Message - основной интерфейс для представления сообщений, из которого наследуются два следующих класса.

TextMessage - класс текстового сообщения.

BinaryMessage - класс бинарного сообщения.

Следующий код осуществляет отправку SMS-сообщения c помощью этого API:

try{

String addr = "sms://+1234567890";

MessageConnection conn = (MessageConnection) Connector.open (addr);

TextMessage msg = (TextMessage)conn.newMessage (MessageConnection.TEXT_MESSAGE);

msg.setPayloadText ("Hello World!");

conn.send (msg);

}

catch (Exception e) {}

Как видишь, здесь все очень просто:

1. создаем соединение

2. создаем сообщение

3. отправляем сообщение

4. закрываем соединение

В случае с отправкой кодированных по нашему методу сообщений, следует использовать класс BinaryMessage. Соответственно код преобразуется следующим образом:

byte[] bin_msg;

try{

String addr = "sms://+1234567890:5151";

MessageConnection conn = (MessageConnection) Connector.open (addr);

BinaryMessage msg = (BinaryMessage)conn.newMessage (MessageConnection.BINARY_MESSAGE);

msg.setPayloadData (bin_msg);

conn.send (msg);

}

catch (Exception e) {}

Обрати внимание на то, что в строке адреса появилось дополнение в виде ":5151". Это номер порта, на который следует отправлять СМСку. Дело в том, что существует два вида SMS-сообщений, в которых присутствует номер порта, и в которых его в помине нет. Сообщения первого типа принимаются стандартным ПО телефона. Сообщения второго типа, в свою очередь, должны обрабатываться соответствующими мидлетами настроенными на получение сообщений из данного порта. Если в момент поступления сообщения такой мидлет не запущен, то сообщение передается стандартному ПО мобилы.

К примеру, получать все сообщения пришедшие на 5151 порт можно с помощью следующего простого кода:

try{

String addr = "sms://:5151";

MessageConnection conn = (MessageConnection) Connector.open (addr);

Message msg = null;

while (!ex){

msg = conn.receive();

if (msg instanceof TextMessage){

TextMessage txt_msg = (TextMessage)msg;

String text = txt_msg.getPayloadText();

txt_msg.setPayloadText ("Received: " + text);

conn.send(txt_msg);

}

}

}

catch (Exception e) {}

Тут ты можешь столкнуться с небольшой проблемой. Мидлет предназначенный для получения СМСок с определенного порта будет получать их только в то время когда он запущен. В случае если СМСка придет, когда мидлет не запущен, она перенаправится стандартному ПО телефона. Решением данной проблемы является использование технологии Push Registry, которая позволяет установить соответствие между мидлетом и некоторым портом. При поступлении информации в зарегистрированной специальным способом порт твой мидлет автоматически загрузится.

Таким образом, получается некоторое подобие сервера. Для того, что бы связать определенный порт с мидлетом, следует добавить в jad-файл строчку вроде этой:

MIDlet-Push-1: sms://:5151, sms_test, *

Грубо говоря, в этой строке оговорено, что при поступлении сообщений типа sms на 5151 порт, необходимо активизировать мидлет sms_test и передать ему эти данные. Далее мидлет должен проводить декодирование и отображать сообщение в читабельном виде (с этой, достаточно сложной, но очень интересной проблемой предстоит разобраться тебе самому). Посмотреть на уже реализованное приложение, которое принимает, получает, кодирует и декодирует сообщения по описанному выше принципу можно на диске.


Вопрос к кодерам - будет ли все это работать на мотороле?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме

Отправка Смс Из Джава Приложения · Разработка Java-приложений · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.7.2025, 15:44

Форум живёт: