blackberry j2me 发送SMS短信

blackberry发送短信的应用可以调用

javax.wireless.messaging.MessageConnection;

来完成。

 

我首先尝试了用用数据报datagram发送2进制文件的形式,在我的黑莓8800上测试,遇乱码。

public
SendSms() {
try
{
_dc = (DatagramConnection)Connector.open(_openString);
byte
[] data = msg.getBytes();
Datagram d = _dc.newDatagram(_dc.getMaximumLength());
d.setAddress("//" + addr);
_dc.send(d);
}
catch
( IOException e) {
}S
ystem.exit(0);
}

 

然后改用javax.wireless.messaging.MessageConnection;的形式

成功发送任意字符(包括中文)

 

代码如下:

package com.kennan.contactList;

import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;

public final class Sender extends Thread {

	private MessageConnection _mc;
	private String _address;
	private String _message;

	public Sender(MessageConnection mc) {
		this._mc = mc;
		start();
	}

	public synchronized void send(String addr, String msg) {
		_address = addr;
		_message = msg;
		notify();
	}

	public synchronized void run() {
		while (true) {
			// If no client to deal, wait until one connects
			if (_message == null) {
				try {
					wait();
				} catch (InterruptedException e) {
				}
			}

			try {
				TextMessage msg;

				// Are we a sender thread for the client ? If so then there's
				// no address parameter
				if (_address == null) {
					msg = (TextMessage) _mc
							.newMessage(MessageConnection.TEXT_MESSAGE);
				} else {
					msg = (TextMessage) _mc.newMessage(
							MessageConnection.TEXT_MESSAGE, _address);
				}
				msg.setPayloadText(_message);
				_mc.send(msg);

			} catch (Exception ioe) {
				ioe.printStackTrace();
			}

			// Completed client handling, return handler to pool and
			// mark for wait
			_message = null;
		}
	}
}

 

调用代码

package com.kennan.contactList;

import java.io.IOException;

import javax.microedition.io.Connector;
import javax.wireless.messaging.MessageConnection;

public class SendSMS {

	public static void sendSMS(String phoneNumber, String messageContext) {

		try {
			MessageConnection mc = (MessageConnection) Connector
					.open("sms://" + phoneNumber);
			Sender sender = new Sender(mc);
			sender.send(null, messageContext);
		} catch (IOException e) {

			e.printStackTrace();
		}
	}
}
 

你可能感兴趣的:(thread,BlackBerry,黑莓)