отправить смс из фоновой темы в blackberry с помощью j2me - PullRequest
1 голос
/ 16 июня 2010

эй, я сделал много поиска и нашел несколько похожих типов кода.Я пытался для gsm

метод 1 дает IllegalArgumentException

try
{
MessageConnection _mc = (MessageConnection)Connector.open("sms://");
TextMessage tm = (TextMessage) _mc.newMessage(MessageConnection.TEXT_MESSAGE);
tm.setPayloadText(smsText);
tm.setAddress("965xxxxxxx");
_mc.send(tm);
_mc.close();
}catch(exception e){}

метод 2: дает исключение java.lang.error

  try
    {
    MessageConnection _mc = (MessageConnection)Connector.open("sms://");
    TextMessage tm = (TextMessage) _mc.newMessage(MessageConnection.TEXT_MESSAGE,
"//9790XXXXXX");
    tm.setPayloadText(text);
    _mc.send(tm);
    _mc.close();
        }catch(Exception e){}

Я думаю, что проблема с адресом ятакже пытался: но безуспешно + 91965xxxxxxx, 0091965xxxxxxx, 0965xxxxxxx

Как работает мое приложение ----

Я создал 2 приложения -

1) Application 1 is a background app that is a System module as well as 
    startup application.
2) Another is a uiapplication

фонприложение запускается в фоновом режиме. Если поступает входящий вызов, то в постоянном объекте устанавливается значение флага и после проверки этого значения как истинного отправляется смс тому, от кого не сделан вызов.

1 Ответ

1 голос
/ 16 июня 2010

ок, попробуйте

import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.Datagram;
import javax.microedition.io.DatagramConnection;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;

import net.rim.device.api.system.RadioInfo;

public class SendSMS extends Thread {

    private String to;
    private String msg;

    public SendSMS(String to, String msg) {
        this.to = to;
        this.msg = msg;

    }

    public void run() {
        if (RadioInfo.getNetworkType() == RadioInfo.NETWORK_CDMA) {
            DatagramConnection dc = null;
            try {
                dc = (DatagramConnection) Connector.open("sms://" + to);
                byte[] data = msg.getBytes();
                Datagram dg = dc.newDatagram(dc.getMaximumLength());
                dg.setData(data, 0, data.length);
                dc.send(dg);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    dc.close();
                } catch (IOException e) {
                    System.out.println(e.getMessage());
                }
            }

        } else {
            MessageConnection mc = null;
            try {
                mc = (MessageConnection) Connector
                        .open("sms://" + to);
                TextMessage m = (TextMessage) mc
                        .newMessage(MessageConnection.TEXT_MESSAGE);
                m.setPayloadText(msg);
                mc.send(m);
            } catch (IOException e1) {
                e1.printStackTrace();
            } finally {
                try {
                    mc.close();
                } catch (IOException e) {
                    System.out.println(e.getMessage());

                }
            }
        }
    }

}

и звоните вот так

public void callDisconnected(int callId) {
        final PhoneCall call = Phone.getCall(callId);
        final String number = call.getDisplayPhoneNumber();
        SendSMS sendSMS = new SendSMS(number, "message");
        sendSMS.start();
        super.callDisconnected(callId);
    }
...