发信息:
...........
public class Server{
srv.setInboundMessageNotification(new InboundNotification ());
while(str!=null&&"Y".equals(str.toUpperCase())) 
{
// Send a message synchronously.
msg = new OutboundMessage("135xxxxxxxx",
"Hello from 天 下 无 双 SMSLib !");
msg.setEncoding(MessageEncodings.ENCUCS2);// 这句话是发中文短信必须的
msg.setStatusReport(true);
if (srv.sendMessage(msg))
System.out.println("=============短信息发送成功============");
else {
System.out.println(msg.getFailureCause().toString());
System.out.println("=============短信息发送失败============");
}
System.out.println(">>>发送短信是否Y/N");
str = new BufferedReader(new InputStreamReader(System.in))
.readLine();
}
public class InboundNotification implements IInboundMessageNotification {
public void process(String gatewayId, MessageTypes msgType,
InboundMessage msg) {
System.out.println("==========================================");
if (msgType == MessageTypes.INBOUND)
{ System.out.println("信息编码为:"+msg.getEncoding());
System.out.println("pdu格式数据:"+msg.getPduUserData());
System.out.println("信息来自手机:"+msg.getOriginator().substring(2));
System.out.println("时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(msg.getDate()));
System.out.println("短信内容:"+msg.getText());
}
else if (msgType == MessageTypes.STATUSREPORT)
{
System.out
.println(">>> 状态回复信息来自: "
+ gatewayId);
System.out.println(msg);
}
}
}
}
难道不能一直发短信,然后再监听收短信吗?
异常为:
Exception in thread "SMSLib-AsyncMessageProcessor : gsm.modem" java.lang.StringIndexOutOfBoundsException: String index out of range: -12
at java.lang.String.substring(String.java:1937)
at org.smslib.modem.ModemGateway.readMessagesPDU(ModemGateway.java:527)
at org.smslib.modem.ModemGateway.readMessages(ModemGateway.java:206)
at org.smslib.modem.AModemDriver$AsyncMessageProcessor.run(AModemDriver.java:891)