我有一些java代码发送短信。
它将在15秒内多次返回交货报告。(但有时不会发生)
如果没有提供15秒的发送报告,我想停止短信发送功能。
如果可以,请提供类似的示例代码或
给出一些我应该阅读的链接。
非常感谢你......!
`
public String sendTest(String port )
{
modemName = "Huwawi";
bitRate = 115200;
modemPin = "0000";
SMSC = "+94785000008"; try {
OutboundMessage msg;
OutboundNotification outboundNotification = new OutboundNotification();
SerialModemGateway gateway = new SerialModemGateway(id, "COM1", bitRate, modemName, "E17u-1");
gateway.setInbound(true);
gateway.setOutbound(true);
gateway.setSimPin(modemPin);
Service.getInstance().setOutboundMessageNotification(outboundNotification);
Service.getInstance().addGateway(gateway);
Service.getInstance().startService();
msg = new OutboundMessage("+94710433607", "test successful !");
Service.getInstance().sendMessage(msg);
OutboundMessage.MessageStatuses status = msg.getMessageStatus();
System.out.println(msg.getMessageStatus());
Service.getInstance().stopService();
Service.getInstance().removeGateway(gateway);
} catch (Exception ex) {
if (ex.getStackTrace()[2].getLineNumber() == 189) {
JOptionPane.showMessageDialog(null,
"Port currently owned by usb Modem's application. \n Please close it & run the programm again.",
"Port Exception",
JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
} else {
JOptionPane.showMessageDialog(null,
ex.getMessage(),
"Sending faile",
JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
}
}return port;
}
`
如果我提供了错误的端口号,则代码将停留在
Service.getInstance().startService();
如果我给出正确的端口号,则会在15秒之前收到送达报告。
如果我给出错误的端口号,代码不会给出或返回任何值。
如果代码在15秒内没有返回值,我知道端口号是错误的。
所以如果它在15秒内没有返回值,我想要一个帮助来自动关闭它。
再次感谢......!
答案 0 :(得分:0)
你应该创建一个线程,并在15秒内没有任何事情发生时停止它。 我的意思是这样的:
Thread t = new Thread(){
@Override
public void run()
{
// Send SMS
}
}
t.start();
// ...
long time = System.currentTimeMillis();
while(true)
{
if(System.currentTimeMillis() - time > 15000)
t.stop();
}
我希望你得到我说的话