2016-12-27 20 views
1

私はこれを試していますが、正しく動作しないことがあります。コードをループするためにwhileループを使用しました。これに対していくつかのリスナーを追加することはできますか?いずれにせよ、これに対して私は正しい答えを与えることができますか? responceを取得する必要がリアルタイムSMSが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())

に通知クラスの追加を探しているインターフェースだと思いますモデムがメッセージを受信するたびにprocess()メソッドが呼び出されます。

それはそうあなたがメッセージにあなたが新しいを受け取るたびに削除されていない受信し続けます手動

@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 
}

行われる必要があるので、私が覚えている限りでは、smslib(バージョン3.5.x)が受信したメッセージを削除しません。 1。

あなたはこれが便利だと思います。

関連する問題