public interface MsgListener
{
public static int MSG_CREATE = 0;//短信连接创建
public static int MSG_START = 1;//短信开始发送
public static int MSG_SENDING = 2;//短信发送中
public static int MSG_SENDED = 3;//短信发送成功
public static int MSG_ERROR = 4;//短信发送错误
public void msgAction(String msgInfo, int state);
}
public class MsgSend
{
MsgListener i_msgListener;
public MsgSend(MsgListener a_msgListener)
{
this.i_msgListener = a_msgListener;
}
public void doSendMessage(String a_msg)
{
if (a_msg==null || !a_msg.startsWith("sms://"))
return;
String num = a_msg.substring(6, a_msg.indexOf('#'));
String msg = a_msg.substring(a_msg.indexOf('#') + 1);
if (num==null || num.length()<=0
|| msg == null || msg.length() == 0)
return;
doSendMessage(num, msg);
}
/**
* 发送短信
* @param a_address 手机号码
* @param a_msg 消息内容
*/
public void doSendMessage(final String a_address, final String a_msg)
{
Thread t = new Thread()
{
public void run()
{
createMsgAction("开始发送", MsgListener.MSG_START);
String address = "sms://" + a_address;
MessageConnection smsconn = null;
try
{
smsconn = (MessageConnection) Connector.open(address);
TextMessage txtmessage = (TextMessage) smsconn
.newMessage(MessageConnection.TEXT_MESSAGE);
txtmessage.setAddress(address);
// 在手机上转码
if(!Util.isEmulator())
txtmessage.setPayloadText(Util.encodeStr("UTF-8", a_msg));
else
txtmessage.setPayloadText( a_msg);
createMsgAction("发送中", MsgListener.MSG_SENDING);
smsconn.send( txtmessage );
createMsgAction("发送成功", MsgListener.MSG_SENDED);
}
catch (Throwable t)
{
createMsgAction(t.getMessage(), MsgListener.MSG_ERROR);
//System.out.println("send msg error:"+t.getMessage());
t.printStackTrace();
}
if (smsconn != null)
{
try
{
smsconn.close();
}
catch (Exception ioe)
{
ioe.printStackTrace();
}
}
}
};
createMsgAction("请等待", MsgListener.MSG_CREATE);
t.start();
}
public void createMsgAction(String a_msg, int a_state)
{
if(a_msg==null)
return;
if(i_msgListener!=null)
i_msgListener.msgAction(a_msg, a_state);
}
}