2016-12-27 112 views
1

我嘗試這一點,但它有些時候不能正常工作..我用循環代碼循環。我可以爲此添加一些列表程序嗎?任何人都可以給我這個正確的答案?在需要獲得性反應的實時短信沒有收到與Java smslib庫

while (true) { 
      msgList = new ArrayList<InboundMessage>(); 
      Service.getInstance().readMessages(msgList, InboundMessage.MessageClasses.ALL); 
      for (InboundMessage im : msgList) { 

       if (last < im.getMemIndex()) { 
        ResultSet rs = DB.getConnection().createStatement().executeQuery("Select * From codes where code='" + im.getText() + "'"); 
        if (rs.next()) { 
         ResultSet rs2 = DB.getConnection().createStatement().executeQuery("Select * From sms_log where code='" + im.getText() + "' AND tel_no='" + im.getOriginator() + "'"); 
         if (rs2.next()) { 
           if (m == null) { 
            m = new SMSClient(1); 
           } 
           m.sendMessage(im.getOriginator(), "The Code is Already Sent... Thank You!."); 

          System.out.println("The Code is Already Sent... Thank You!."); 
         } else { 
          System.out.println("The Code Verified... Thank You!."); 
          if (m == null) { 
           m = new SMSClient(1); 
          } 

          m.sendMessage(im.getOriginator(), "The Code Verified... Thank You!."); 
          DB.getConnection().createStatement().execute("INSERT INTO sms_log (tel_no,code,status) values('" + im.getOriginator() + "','" + im.getText() + "',1)"); 

         } 
        } else { 
         if (m == null) { 
          m = new SMSClient(1); 
         } 
         m.sendMessage(im.getOriginator(), "Invalid Code... Thank You!."); 
         System.out.println("Invalid Code... Thank You!."); 
        } 

       } 
      } 
      Thread.sleep(10000); 
      System.out.println("start"); 

     } 

回答

0

我覺得IInboundMessageNotification是您正在尋找

public class InboundNotification implements IInboundMessageNotification { 

    @Override 
    public void process(AGateway aGateway, Message.MessageTypes messageTypes, InboundMessage inboundMessage) { 
    //add you logic for received messages here 
    } 
}

添加通知類smsLib服務

Service.getInstance().setInboundMessageNotification(new InboundNotification())

從現在起,接口過程()方法將在您的調制解調器每次收到消息時被調用。

至於我記得,smslib(版本3.5.x的)不會刪除收到的郵件,因此需要,否則需要手動完成

@Override 
public void process(AGateway aGateway, Message.MessageTypes messageTypes, InboundMessage inboundMessage) { 
    try { 
     aGateway.deleteMessage(inboundMessage); 
     } catch (TimeoutException | GatewayException | InterruptedException | IOException e) { 
      e.printStackTrace(); 
     } 
    // your logic here 
}

你能不能讓每一次接收未刪除的消息收到新一。

希望你會發現這個有用。